[英]Passing exception data between two applications
我不知道這是否已經回答。 但是,我找不到此問題的示例或原因。
應用1:
try
{
//Read request and check for the request header element from the soap request
//validating request and salt
...here it might gets failed.
_requestValidationService.ValidateRequest();
}
catch (Exception ex)
{
ex.Data.Add("Exception", "test");
throw ex;
}
應用2:
catch (Exception ex)
{
string aa = Convert.ToString(ex.Data["Exception"]);
throw ex;
}
我不知道我在這里想念的是什么。 但是aa似乎總是空的,而ex.Data.Count
總是零。
我只想在兩個應用程序之間傳遞一個代碼,而不添加異常的新類。
注意:這兩個應用程序是wcf調用。
[EDIT1]
應用程序1驗證請求是IDispatchMessageInspector
AfterReceiveRequest
異常不會從WCF服務傳播到客戶端。 而是將SOAP Fault(假設您正在使用SOAP)發送給客戶端。
您可以在SOAP Fault中包含異常詳細信息 ,但是通常不建議在生產環境中包含異常詳細信息 。
恕我直言,更好的方法是實現一個IErrorHandler , 該IErrorHandler向Fault提供您要發送到客戶端的任何數據,並且還使您有機會記錄異常在服務器端。
然后,您可以在客戶端上捕獲FaultException
,並可以訪問自定義錯誤處理程序添加的數據。
異常類由一對拋出/捕獲對設計。 如果應將任何其他信息添加到緩存的異常,請使用重新拋出技術使用內部異常功能:
catch (Exception ex)
{
ErrorHandling.WriteError(ex);
var newEx = new MyException("Additional message", ex) // wrap the original exception instance.
newEx.Data.Add("Exception", "test");
throw newEx;
}
捕獲包裝程序異常后,您可以在InnerException屬性中找到原始異常。 原始異常和包裝異常包含它們自己的堆棧跟蹤的另一個優點是,可以更輕松地找到錯誤源的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.