【问题标题】:Ninject - The resource cannot be foundNinject - 找不到资源
【发布时间】:2011-08-15 14:13:30
【问题描述】:

我得到错误

找不到资源。

当我尝试在我的 MVC-3 应用程序中实现 Ninject 时。问题似乎来自CreateKernel()期间的 Global.asax

#region Inversion of Control

    protected override IKernel CreateKernel()
    {
        return Container;
    }

    static IKernel _container;
    public static IKernel Container
    {
        get
        {
            if (_container == null)
            {
                _container = new StandardKernel(new SiteModule());
            }
            return _container;
        }
    }

    internal class SiteModule : NinjectModule
    {
        public override void Load()
        {
            bool MOCKDB = true;
            //MOCKDB = false;//Stop Mocking
            if (MOCKDB)
            {
                //Set up mock bindings
                Bind<iItem>().To<LeadServiceMock>();
            }
            else
            {
                //Set up real bindings.
                Bind<iItem>().To<LeadService>();
            }
        }
    }
    #endregion

如果我取出上面的代码并恢复为System.Web.HttpApplication,那么一切都会重新开始。

public class MvcApplication : NinjectHttpApplication//:System.Web.HttpApplication
    {

我从之前编写的实现中提取了这段代码,该实现仍然有效。如果我逐步调试

protected override IKernel CreateKernel()
{
    return Container;
}

我在两个工作程序和这个损坏的程序中都遇到了错误:

Locating source for 'c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectHttpApplication.cs'. Checksum: MD5 {b8 b2 52 86 ce 34 de 53 61 76 c9 df ff 65 8c 3f}
The file 'c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectHttpApplication.cs' does not exist.
Looking in script documents for 'c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectHttpApplication.cs'...
Looking in the projects for 'c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectHttpApplication.cs'.
The file was not found in a project.
Looking in directory 'c:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\'...
Looking in directory 'c:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\'...
Looking in directory 'c:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl\'...
Looking in directory 'c:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\'...
The debug source files settings for the active solution indicate that the debugger will not ask the user to find the file: c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectHttpApplication.cs.
The debugger could not locate the source file 'c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectHttpApplication.cs'.

我怀疑我在SiteModule 中做错了什么。我做错了什么?

【问题讨论】:

    标签: asp.net-mvc-3 inversion-of-control ninject


    【解决方案1】:

    Application_Start() 替换为OnApplicationStarted()

        //protected void Application_Start()
        //{
        //    AreaRegistration.RegisterAllAreas();
    
        //    RegisterGlobalFilters(GlobalFilters.Filters);
        //    RegisterRoutes(RouteTable.Routes);
        //}
    
        protected override void OnApplicationStarted()
        {
            AreaRegistration.RegisterAllAreas();
    
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2015-05-03
      • 2013-01-03
      • 2014-03-20
      • 2015-04-13
      • 2021-07-06
      相关资源
      最近更新 更多