我已经为我的服务做了如下装饰
<ExceptionShielding("MyExceptionPolicyName")>
当抛出错误异常时,我的策略会拾取错误并正常登录。它获取handlingInstance Id并将其与错误一起记录,以供参考。我注意到,错误"Error ID:“中返回的Guid与传递到处理instanceId中的Guid不同。
我也试着像这样来装饰这个操作
<FaultContract(GetType(ValidationFault))>
但这会产生相同的结果。
我想做的是如何捕获传递回消费者的“错误ID:”,这样我就可以将它与异常一起记录下来。*附加信息:异常策略处理程序是一个自定义的处理程序,它接受异常,并将其各种属性和数据记录到特定的异常日志数据库模式中。
有人知道怎么做到这一点吗?
更新:根据@Jay Patel的评论,我将此添加到我的配置中以启用跟踪
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\Temp\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
然后,我执行了一个请求,以获取由异常屏蔽屏蔽的故障响应。错误响应字符串的格式如下:“使用此服务时出错。有关详细信息,请与您的管理员联系。错误ID:{GUID}”
然后,我查看了跟踪日志,但没有找到GUID或此字符串的证据。
这里是指向跟踪日志的pastebin链接,希望在使用ExceptionShielding时查看跟踪日志示例的任何人都可以使用。
UPDATE2:
再一次,根据@Jay Patel的评论,添加了这个。我尝试为maxMessageLog设置-1和max int值,以确保在该日志中获得最大量的数据。
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" />
</diagnostics>
日志没有任何帮助。它包括,,甚至是任何接近回答我的问题的东西。
为了澄清一下,以防上面说得不清楚。我希望能够捕获返回给客户端的消息中"Error ID:“后面的GUID,这样我就可以用异常处理程序记录的异常来记录它。通过这种方式,客户端可以像消息中所说的那样,使用错误ID联系“管理员”,并且实际上能够找到一些东西。
下面是启用了完整跟踪的pastbin
发布于 2013-09-19 06:58:20
根据http://msdn.microsoft.com/en-us/library/ff649012.aspx的说法
您还可以指定Source "{Guid}“,以将当前处理实例ID添加到错误协定属性中。
在.config文件中:
<mappings>
<add source="{Guid}" name="HandlingInstanceId" />
</mappings>
在您的ValidationFault FaultContract中:
[DataMember]
public Guid HandlingInstanceId { get; set; }
注意:"{Guid}“源似乎是处理实例ID的特殊标记。
发布于 2013-12-01 18:45:54
消息日志记录会有帮助吗?如果是这样的话,我猜你需要在你的配置中有类似这样的东西:
<source name ="System.ServiceModel.MessageLogging"
switchValue="Verbose, ActivityTracing">
<listeners>
<add name="xml" />
</listeners>
请注意,此处的源名称为“System.ServiceModel.MessageLogging”,而不是“System.ServiceModel”。
有关完整示例,请参阅本文:http://msdn.microsoft.com/en-us/library/dd788183.aspx
希望这能对你有所帮助。
https://stackoverflow.com/questions/15913197
复制相似问题