我使用Ninject 2和Ninject.Web.MVC和使用NinjectHttpApplication誤差的AccountController和Ninject 2和ASP.NET MVC 2預覽2
在登錄過程中接收到以下錯誤: 「A控制器'MySite.Controllers.AccountController'的單個實例不能用於處理多個請求。如果自定義控制器工廠正在使用中,請確保它爲每個請求創建一個新的控制器實例。
我的Global.asax中有這樣的:
protected override void OnApplicationStarted()
{
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new MySite.IoCModules.FakeRepositoriesModule(), new MySite.IoCModules.AccountControllerModule());
}
的AccountControllerModule看起來是這樣的:
public class AccountControllerModule:Module
{
public override void Load()
{
Bind<IFormsAuthentication>().To<FormsAuthenticationService>();
Bind<IMembershipService>().To<AccountMembershipService>();
Bind<MembershipProvider>().ToConstant(Membership.Provider);
}
}
我猜測是它有事情做生命週期RegisterAllControllersIn期間設置...但我只是不確定...有什麼想法從哪裏去?
更新:剛剛看到它也發生在HomeController上......它必須試圖讓它變成一個單獨的東西或者其他東西嗎?
奇怪。如果你創建一個打擊新的MVC項目的品牌,然後在你的控制器中沒有任何DI的情況下將Ninject 2添加到它,會發生什麼......同樣的錯誤? – Charlino 2009-11-12 03:12:32
創建一個新的MVC應用程序並連接Ninject 2後,點擊後也會發生同樣的事情。首頁/索引視圖出現了,但是如果你點擊主頁選項卡,它會顯示:「控制器'MvcApplication1.Controllers.HomeController'的單個實例不能用於處理多個請求。如果自定義控制器工廠正在使用中,確保它爲每個請求創建一個新的控制器實例。「 – Webjedi 2009-11-12 16:07:16
有趣的是,在我創建的新MVC項目中,我做了一個HomeModule,它完成了Bind()。並加載內核,它的工作......也許我誤解了RegisterAllControllers ... –
Webjedi
2009-11-12 16:17:17