我有以下的裝飾我的服務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