2010-11-09 31 views
5

我在這裏做錯了什麼,或者我沒有做什麼? (我使用在.NET 4.0 WCF服務此代碼)當試圖訪問「CacheFactory.GetCacheManager();」時,「Microsoft.Practices.EnterpriseLibrary.Caching」有什麼問題?

 private static ICacheManager GetCacheManager() 
    { 
     try 
     {     
      return CacheFactory.GetCacheManager(); 
     } 
     catch (SynchronizationLockException ex) 
     { 
      EventLogHelper.WriteError(ex); 
     } 
     catch (ConfigurationException ex) 
     { 
      EventLogHelper.WriteError(ex); 
     } 
     return null; 
    } 

當調試器命中返回它引發此異常:

System.Threading.SynchronizationLockException發生 消息=對象同步方法是從稱爲一個非同步的代碼塊。 Source = Microsoft.Practices.Unity StackOffice: at Microsoft.Practices.Unity.SynchronizedLifetimeManager.TryExit()in e:\ Builds \ Unity \ UnityTemp \ Compile \ Unity \ Unity \ Src \ Lifetime \ SynchronizedLifetimeManager.cs:line 109 InnerException:

這是Enterprice庫中的錯誤嗎?

回答

0

嘗試在WCF服務中創建數據庫時出現同樣的錯誤。 (Entlib 5.0,.NET 4.0)

Database db = DatabaseFactory.CreateDatabase(); 

我們得到了周圍用SqlDatabase對象,而不是。數據庫可能已被棄用,所以我會先在代碼中進行檢查,並確保您正在嘗試執行的操作仍受支持。

8

問題確實存在於許多企業庫塊中。這與Unity實施的方式有關。實際的問題不在於代碼本身不正確。這個例外很有用,但調試器似乎忽略了這個事實。

的問題說明如下:

不幸的是,沒有太多可以做,以避免這種錯誤。如果模式&實踐團隊在解決這個問題時應該更加迭代,那肯定會很好;)。

快樂編碼!

7

這似乎是由企業庫統一塊內部引發的異常,但它也處理。這讓我把我的聽到,直到我意識到我有Break時,異常是拋出啓用CLR異常。

調試 - >異常

取消勾選此停止調試器時,會拋出異常斷裂。

0

在使用EntLib的舊程序中添加功能時遇到此問題。關閉調試器異常感覺就像是黑客。在VS 2015中,工具|選項|調試|啓用只是我的代碼選項爲我工作。