2011-08-15 147 views
4

我得到错误Ninject - 资源无法找到

的资源不能被发现。

当我尝试在我的MVC-3应用程序中实现Ninject时。如果我把上面出来的代码,并恢复到System.Web.HttpApplication然后事情开始重新工作的问题出现在CreateKernel()

#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 

从Global.asax中来。

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。我究竟做错了什么?

回答

4

替换为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); 
    }