获得“无法找到资源”。使用Ninject时出错

时间:2012-07-28 08:18:20

标签: asp.net-mvc-3 ninject ninject.web.mvc ninject-3

我正在使用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

造成这种情况的原因以及如何解决?

1 个答案:

答案 0 :(得分:1)

事实证明这是因为我继承的NinjectHttpApplication类在启动时调用OnApplicationStarted()方法。因此,解决方案是删除Application_Start()方法并将所有代码移至OnApplicationStarted()