0
我的應用程序由3層構成,非常簡單。WCF服務的企業庫異常處理問題
- 類庫與所有的商業邏輯暴露類庫
- asp.net web用戶界面
- WCF服務。
在類庫層,我定義了一個企業庫異常處理策略,以便它將所有異常記錄到數據庫中。在底層代碼中,引發異常,並且它們合併到外觀。在Facade中,我觸發EL策略來記錄錯誤,然後在響應中切換sucessStatus布爾值,並有一種方法將所有異常轉換爲友好列表,以便最終用戶可以深入瞭解這一點以獲取任何想法發生了什麼事情。
我在我的類庫門面看起來有點像這樣:
public SomeResponse DoSomething(SomeRequest request)
{
SomeResponse response = new SomeResponse();
try
{
response.data = SomeOperationThatWillThrowAnException;
}
catch (InvalidOperationException ex)
{
var exceptionManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
exceptionManager.HandleException(ex, "StandardPolicy");
response.Errors.Add(Utility.ExceptionToError(ex));
response.SuccessStatus = false;
}
return response;
}
如果我建立一個簡單的WinForm的客戶端,並把它跟我的類庫,這個工程。
但是,當我使用完整的堆棧時,我得到「錯誤異常未被用戶代碼處理」。我似乎無法以任何方式在WCF層配置EL以防止發生這種情況。
我的WCF服務只是我的類庫外觀的簡單包裝。
public SomeResponse DoSomething(SomeRequest request)
{
return new MyFacade.DoSomething(request);
}
我想要的是讓類庫靜靜地處理錯誤,並且不會在WCF或UI級別觸發任何異常。我希望消費者(在這種情況下是ASP.NET webform UI)必須檢查響應消息的內容,以獲取發生的事情的線索,而不是在其跟蹤中停止執行異常停止執行。