Asp.net mvc 2 从头开始使用ASP.NET MVC 2和Ninject 2
我昨天晚上刚做了一个新项目的文件->新项目。啊,这个 绿色田野的气味 我使用的是刚刚发布的ASP.NET MVC 2(即没有预览版或发布版) 我想我会有一个好的开始 使用带有MVC扩展的Ninject 2(也是发布版本)。我 下载了MVC扩展项目,在VS2008Sp1中打开它,构建 它处于发布模式,然后进入mvc2\build\release文件夹 并将Ninject.dll和Ninject.Web.Mvc.dll从那里复制到 我的项目上的Libraries文件夹(以便我可以在 源代码管理,并且始终在任何地方都有正确的版本)。我没有 包括相应的.xml文件-我应该吗?他们只是提供 智能感知,还是其他功能?我相信没什么大不了的 总之,我遵循了我能找到的最新建议;我 在我的MVC2项目中引用了DLL,然后开始工作 Global.asax.cs。首先,我让它从NinjectHttpApplication继承。我 删除了Application_Start()方法,改为重写applicationstarted()。以下是该方法:Asp.net mvc 2 从头开始使用ASP.NET MVC 2和Ninject 2,asp.net-mvc-2,ninject-2,Asp.net Mvc 2,Ninject 2,我昨天晚上刚做了一个新项目的文件->新项目。啊,这个 绿色田野的气味 我使用的是刚刚发布的ASP.NET MVC 2(即没有预览版或发布版) 我想我会有一个好的开始 使用带有MVC扩展的Ninject 2(也是发布版本)。我 下载了MVC扩展项目,在VS2008Sp1中打开它,构建 它处于发布模式,然后进入mvc2\build\release文件夹 并将Ninject.dll和Ninject.Web.Mvc.dll从那里复制到 我的项目上的Libraries文件夹(以便我可以在 源代码管理,并且
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
// RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override Ninject.IKernel CreateKernel()
{
// RegisterAllControllersIn(Assembly.GetExecutingAssembly());
return new StandardKernel();
}
我还遵循了VS的建议,实现了CreateKernel
方法:
protected override Ninject.IKernel CreateKernel()
{
// RegisterAllControllersIn(Assembly.GetExecutingAssembly());
return new StandardKernel();
}
仅此而已。没有对项目进行其他修改
您会注意到RegisterAllControllersIn()方法被注释
在上面两个地方。我想我可以用三种不同的方式运行它
组合,都有其令人生厌的副作用
- 像上面那样运行它李>
- 在中取消对RegisteralControllerSin()方法的注释 CreateKernel()
- 在中取消对RegisteralController()方法的注释 OnApplicationStarted()
(也发到了Ninject谷歌集团)回答我自己的问题时,我感到很不自在,但为了任何可能陷入这一困境的人的利益 这不是一个Ninject问题,实际上,这似乎是Cassini(内置于VS2k8中的web服务器)的问题,它处理这些请求的方式与IIS处理请求的方式不同。最基本的原因是应用程序收到了一个favicon.ico的请求,Cassini将该请求发送给MVC,Ninject不知道如何处理该请求 Ian Davis在令人印象深刻的短时间内解决了这个问题,并且还建议添加一个忽略路径,以避免在进行开发时出现这个问题。只需将以下内容添加到路由配置中:
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
希望这对别人有帮助 这件事正在被Ninject的人解决。当我把我的头都缠在上面的时候,我会感觉到更多!为什么你没有注册任何像(readme.markdown)这样的模块?(我在上看到了线程)?嗨,没有模块的原因是这是一个处女项目,存储库和其他将被注入的东西还不存在。在设置MVC项目之后,我做的第一件事基本上是将Ninject 2添加到混合中,以确保控制器注入工作,但实际上没有。这就是我的理由+1为啊,绿色田野的气息。尤其是当它们开始开花的时候