0

私は依存性注入フレームワークとして 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。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。

要求された URL: /Home/Index

何が原因で、どうすれば修正できますか?

4

1 に答える 1

1

これは、継承元のクラスが起動時にメソッドをNinjectHttpApplication呼び出しているために発生していたことがわかりました。OnApplicationStarted()したがって、解決策は、Application_Start()メソッドを削除して、そのすべてのコードを に移動することですOnApplicationStarted()

于 2012-07-28T08:20:57.287 に答える