Run*_*sen 9 ninject-2 asp.net-mvc-2
我刚刚在一个新项目上做了File - > New Project.啊,绿色田野的气味.
我正在使用刚刚发布的ASP.NET MVC 2(即没有预览或发布候选版本,真实的东西),并且认为我使用Ninject 2(也是已发布的版本)与MVC扩展开始了一个良好的开端.我下载了MVC扩展项目,在VS2008Sp1中打开它,在发布模式下构建它,然后进入mvc2\build\release文件夹并将Ninject.dll和Ninject.Web.Mvc.dll从那里复制到我的Libraries文件夹中项目(这样我就可以在源代码管理中把它们拉到一边,并且每个地方都有正确的版本).我没有包含相应的.xml文件 - 我应该吗?他们只提供智能感知或其他功能吗?我相信没什么大不了的.
Anyhoo,我遵循了我能找到的最新建议; 我在我的MVC2项目中引用了DLL,然后开始使用Global.asax.cs.首先,我让它继承自NinjectHttpApplication.我删除了Application_Start()方法,并改为使用OnApplicationStarted().这是方法:
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
// RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
Run Code Online (Sandbox Code Playgroud)
我也遵循VS的建议并实现了CreateKernel方法:
protected override Ninject.IKernel CreateKernel()
{
// RegisterAllControllersIn(Assembly.GetExecutingAssembly());
return new StandardKernel();
}
Run Code Online (Sandbox Code Playgroud)
就这些.没有其他修改项目.
您会注意到RegisterAllControllersIn()方法在上面的两个地方被注释掉了.我想我可以用三种不同的组合来运行它,所有这些都带有时髦的副作用;
然后,我将获得标准的"欢迎使用ASP.NET MVC"页面的所有荣耀.但是,在浏览器中正确显示此页面后,VS会向我显示抛出的异常.它抛出NinjectControllerFactory.GetControllerInstance(),它在controllerType参数中使用NULL值调用.请注意,这是在/ Home页面呈现后发生的 - 我不知道为什么再次调用它,并且通过使用断点我已经确定已成功调用了HomeController的GetControllerInstance().为什么这个带有controllerType的新调用为null?我真的不知道.此时按F5将我带回浏览器,没有任何投诉.
这是东西真正开始变得时髦的地方.现在我收到404错误.有时我在RegisterAllControllersIn()行上也得到了一个ArgumentNullException,但这种情况非常罕见,而且我无法重现它.
(并将注释放回CreateKernel()中的注释)
结果似乎与第1点中的行为完全相同.
因此,为了永远不进行 - 是否有关于如何使用Ninject 2(两个非beta版本)设置MVC 2项目以获取Ninject提供的控制器的确切分步指南?当然,我将开始提供一些实际的注入东西(如ISession对象和存储库,记录器等),但我想我会先让它工作.
任何帮助将非常感谢!
(也发布到Ninject Google Group)
Run*_*sen 10
我觉得很难回答我自己的问题,但为了任何可能会徘徊在这里的人的利益......
这不是Ninject问题,实际上,它似乎是Cassini(内置于VS2k8中的Web服务器)的问题,它处理这些请求的方式与IIS处理它们的方式不同.基本原因是应用程序收到了对caicon提供给MVC的favicon.ico的请求,而Ninject不知道如何处理它.
Ian Davis在很短的时间内修复了这个错误,并且还建议添加一个忽略路由以在开发时特别避免这个问题.只需将以下内容添加到路由配置中:
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人!
| 归档时间: |
|
| 查看次数: |
2618 次 |
| 最近记录: |