簡體   English   中英

在兩個應用程序之間傳遞異常數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM