簡體   English   中英

ninject和企業庫服務定位器依賴的程序集

[英]ninject and enterprise library service locator dependant assemblies

我將Microsoft.Practices.ServiceLocation程序集與ninject結合使用,以幫助進行服務。 我將我的ninject內核注冊到servicelocator提供程序方法中:

var kernel = new StandardKernel();
//do bindings
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);

上面的代碼在安裝了企業庫的計算機上都可以正常運行(通過msi可執行文件)。 我無法在生產環境中運行安裝程序,因此我在bin目錄中本地擁有該dll,希望這可以正常工作。 但是,它不起作用。 我沒有得到任何未找到的程序集異常,而是從調用“在Microsoft.Practices.ServiceLocation.ServiceLocator.get_Current()”中得到了未設置異常的對象引用。

我已經在幾個地方閱讀過,該程序集沒有任何依賴關系http://msdn.microsoft.com/zh-cn/library/ff664422%28v=PandP.50%29.aspx ,本地dll應該可以把戲,但似乎沒有。

我已經在幾個盒子上進行了測試,並且在運行安裝程序之前,該錯誤一直持續發生。 有趣的是,在我卸載庫之后,它仍然可以工作(我想它已緩存在某個地方)。

有沒有人對這類問題有經驗?

問題原來是servicelocator.current為空,因為我正在自動注冊的綁定模塊之一缺少dll。 因為引導程序是從global.asax調用的,所以我進行了錯誤處理,該錯誤處理應該記錄任何異常並繼續進行(不希望整個網站停止此頁面)。 所以我從來沒有遇到過reg錯誤,而我的引導程序卻在沒有告訴我的情況下失敗了。

var kernel = new StandardKernel();
//do bindings -> throw error here without reaching below two lines to regiester the service locator
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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