2017-03-06 17 views
0

我用我的插件追踪,并有我的代码部分,在那里我抓住一个潜在的引发WebException:转储完整跟踪日志时,CRM将无法打印出来

_traceService.Trace("This message is not logged"); 
try 
{ 
    using (var sr = new StreamReader(request.GetResponse().GetResponseStream())) 
    using (var jsonTextReader = new JsonTextReader(sr)) 
    { 
     _traceService.Trace("Success"); 
     _traceService.Trace(jsonTextReader.ToString()); 
     var ret = serializer.Deserialize<T>(jsonTextReader); 
     sw.Stop(); 
     _traceService.Trace("MadeRequest {0}", sw.Elapsed); 
     return ret; 
    } 
} 
catch (WebException e) 
{ 
    using (var sr = new StreamReader(e.Response.GetResponseStream())) 
    using (var jsonTextReader = new JsonTextReader(sr)) 
    { 
     _traceService.Trace("Error"); 
     _traceService.Trace("Error: " + e.Message); 
     throw; 
    } 
} 

如果我打的例外,我希望我的CRM跟踪日志在异常之前跟踪所有消息,但是我的跟踪日志只有web异常。我甚至看不到“错误”和“错误:”+ e.Message语句。我怎样才能使这个更容易调试?

另外,这段代码与我的主插件逻辑不同,它可以改变什么吗?

回答

1

这不会写入跟踪日志,除非异常是未处理并允许传播。如果你可以更新到CRM 2015年SP1或更高版本,可以使用这里

https://community.dynamics.com/crm/b/crminogic/archive/2015/04/28/plug-in-tracing-in-dynamics-crm-2015-update-1

呈现在我的worflow actvities的解决方案,我已经完全避免了跟踪和处理每一个例外,返回的结果返回给调用工作流/行动来处理。插件是一个不同的问题,您的方案的解决方案可能是抛出异常。