Tag: 故障

WCF ExceptionShielding错误ID不匹配与handlingInstanceId传递给处理程序

我有以下服务装饰 <ExceptionShielding("MyExceptionPolicyName")> 当一个错误exception被抛出时,我的策略会检测到错误并且很好地login。 它采用handlingInstance Id并将其与错误一起logging以供参考。 我注意到的是,在错误中返回的Guid“Error ID:”与传入处理instanceId的错误不同。 我也试图装饰这样的操作 <FaultContract(GetType(ValidationFault))> 但是这会产生相同的结果。 我想要做的是如何捕捉到“错误ID:”传回给消费者,所以我可以logging它与例外。 *补充信息:exception策略处理程序是一个自定义exception,它将各种属性和数据logging到特定的exception日志数据库模式中。 任何人都知道如何做到这一点? 更新:每@ Jay Patel的评论,我把这个添加到我的configuration启用跟踪 <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> 然后,我执行了一个请求来获得由exception屏蔽屏蔽的故障响应。 错误响应string格式如下:“使用此服务时发生错误,请与您的pipe理员联系以获取更多信息。错误ID:{GUID}” 然后我查看了跟踪日志,发现没有任何证据的GUID或这个string。 在使用ExceptionShielding时,任何关心查看其示例的人都可以通过tracelog链接到这个tracelog。 UPDATE2: 再次,根据@Jay Patel的评论,补充说。 我为maxMessageLog尝试了-1和max int值,以确保获得该日志中的最大数据量。 <diagnostics> <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" /> </diagnostics> 日志没有帮助。 它甚至不包括任何关于回答我的问题的事情。 为了澄清的情况下,不清楚上面…我希望能够在消息中的“错误ID:”后面捕获的GUID回到客户端,所以我可以loggingexception处理程序logging的exception。 […]