我有以下的装饰我的服务WCF ExceptionShielding错误ID不匹配了handlingInstanceId传递到处理程序
<ExceptionShielding("MyExceptionPolicyName")>
当故障抛出异常,我的政策拿起就好了错误和日志。它采用handlingInstance Id并将其与错误一起记录以供参考。我注意到的是,在错误中返回的Guid“Error ID:”与传入处理instanceId的错误不同。
我也试着来装饰,像这样
<FaultContract(GetType(ValidationFault))>
操作,但这会产生相同的结果。
我想要做的是如何捕获“错误ID:”传回给消费者,以便我可以将它与异常一起记录下来。 *补充信息:异常策略处理程序是一个自定义的异常处理程序,它将各种属性和数据记录到特定的异常日志数据库模式中。
任何人都知道如何做到这一点?
UPDATE: 每@Jay帕特尔的评论,我已将此添加到我的配置,以使跟踪
<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链接到tracelog,供任何人在使用ExceptionShielding时关心查看其示例。
UPDATE2:
同样,每@Jay帕特尔的评论,添加了此。我为maxMessageLog尝试了-1和max int值,以确保我获得该日志中的最大数据量。
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" />
</diagnostics>
该日志没有帮助。它包括没有什么关于什么甚至接近回答我的问题。
要的情况下,明确目前尚不清楚上面......我希望能够在之后捕捉到GUID“错误ID:”消息中返回给客户端,所以我可以与是例外记录它由异常处理程序记录。这样客户可以通过Error ID与消息说的“管理员”联系,并且实际上能够找到某些东西。
以下是完整的跟踪启用pastbin
所以,我已经在这一次提出了一个赏金。如果有人在某个时候回答了一个答案,我会尽我所能放弃50分的奖励(我甚至不确定你是否可以这样做,但如果答案来了,我喜欢它,我会发布奖励和奖励那个人......如果这是一个不在这里的堆栈......好吧......我会给你一个虚拟的高五并说谢谢:) – wakurth 2013-05-28 18:49:10
不是说它会帮助你,而是让你在[WCF跟踪](http://msdn.microsoft.com/zh-cn/library/ms733025.aspx)中使用跟踪尝试进行日志记录您是否在此处看到相同的错误ID? – 2013-07-18 05:28:54
我没有。我会看看。我工作的公司在MS有联系,我已经提交了这个问题,并被告知他们会将它传递给MS的EntLib团队,并给我一个答案。同时,我会尝试一下WCF跟踪,看看它是否有助于指导我如何在服务器端捕获此值。谢谢。 – wakurth 2013-07-18 17:24:53