0

我正在开发一个 ASP.NET MVC 3.0 应用程序,使用 Ninject 作为我的依赖注入框架。

所以我从 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。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Home/Index

这是什么原因造成的,我该如何解决?

4

1 回答 1

1

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

于 2012-07-28T08:20:57.287 回答