2011-01-24 75 views
2

我已經將MVC3從RC2升級到RTM。我們正在使用Ninject 2.1.0.76,但升級後,事情就停止了。所以我使用NuGet管理器來獲取最新的Ninject,Ninject.MVC3和Ninject.Web.Mvc庫(分別爲2.1.0.91,1.0.0.0和2.1.0.39)。現在,它創建一個AppStart_NinjectMVC3文件。Ninject與MVC3 RTM

我從我的global.asax中刪除了NinjectHttpApplication,並將其重新轉換爲常規的HttpApplication。當我試圖建立,我得到;

進一步尋找,如果停用以下行「異常已被調用的目標引發異常」;

DependencyResolver.SetResolver(new NinjectServiceLocator(kernel));

構建過程。但我很確定我不想這樣做。

任何想法?

----- UPDATE ---------

我創建了一個新的MVC3項目,添加引用Ninject.MVC3這種構建並運行良好。我比較了web.config,沒有看到與Ninject或MVC相關的任何差異。新項目不添加Ninject.Web.Mvc庫,因此我將其刪除並註釋掉了與此相關的所有代碼,但仍會出現錯誤。

+0

您是否遇到運行時錯誤或編譯時錯誤? – 2011-01-24 15:24:22

回答

1

由於ASP.NET MVC 3 Beta IServiceLocator接口is replacedIDependencyResolver。我不確定Ninject.MVC3已經有一個版本,他們已經實現了這個接口。

從行DependencyResolver.SetResolver(new NinjectServiceLocator(kernel))判斷看來他們沒有。

Here's Ninject的這個接口的簡單實現。

UPDATE:該Ninject.Web.Mvc庫有一個NinjectDependencyResolver類從IDependencyResolver界面延伸。我認爲你應該使用這個(我做,一切正常)。

+0

如果我查看ServiceLocator的對象瀏覽器,基本類型顯示爲IDependencyResolver。我嘗試用示例實現交換定位器,但得到同樣的問題。 – Hammerstein 2011-01-24 15:06:42

+0

我已經改變了這一點,但我仍然遇到問題。所以這看起來像一個配置問題。我開始的示例項目有Ninject的2.1.0.76,沒有Ninject.Web.Mvc和Ninject.MVC3 1.0.0.0。這樣做很好。我的解決方案中的所有項目都有2.1.0.91,我試過換掉但沒有運氣。 – Hammerstein 2011-01-24 15:26:26