2012-10-19 67 views
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)必須檢查響應消息的內容,以獲取發生的事情的線索,而不是在其跟蹤中停止執行異常停止執行。

回答

1

您的配置文件中可能有錯誤,導致GetInstance()或HandleException()拋出異常。您是否嘗試過調試WCF服務?