我正在使用Ninject作为我的依赖注入框架来处理ASP.NET MVC 3.0应用程序。
所以我从NinjectHttpApplication继承了我的控制器,如下所示:
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
}
protected void Application_Start()
{
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
AreaRegistration.RegisterAllAreas();
DependencyResolver.SetResolver(new NinjectDependencyResolver(Kernel));
}
protected override Ninject.IKernel CreateKernel()
{
return new StandardKernel(new QueriesModule());
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" },
new string[] { typeof(HomeController).Namespace }
);
}
}
但每当我运行应用程序并尝试浏览到我的任何控制器时,都会收到错误:
无法找到资源。
描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/ Home / Index
造成这种情况的原因以及如何解决?
答案 0 :(得分:1)
事实证明这是因为我继承的NinjectHttpApplication
类在启动时调用OnApplicationStarted()
方法。因此,解决方案是删除Application_Start()
方法并将所有代码移至OnApplicationStarted()
。