.net 我真的需要Ninject.MVC3中的App_Start内容吗?

.net 我真的需要Ninject.MVC3中的App_Start内容吗?,.net,ninject,.net,Ninject,从NuGet下载Ninject.MVC3包将创建此App_Start文件夹,其中包含一个简单的类;我想补充一点,它甚至都不是开箱即用的 浏览它,它似乎没有任何壮观的。。。功能。。。或者任何一个。我在Ninject.Web.Mvc的SampleApplication中也找不到它,因为项目本身就是从这里来的。(https://github.com/ninject/ninject.web.mvc/tree/master/mvc3/src/SampleApplication) 有人能解释一下这个文件夹/

从NuGet下载Ninject.MVC3包将创建此App_Start文件夹,其中包含一个简单的类;我想补充一点,它甚至都不是开箱即用的

浏览它,它似乎没有任何壮观的。。。功能。。。或者任何一个。我在
Ninject.Web.Mvc
SampleApplication
中也找不到它,因为项目本身就是从这里来的。(https://github.com/ninject/ninject.web.mvc/tree/master/mvc3/src/SampleApplication)


有人能解释一下这个文件夹/类的用途吗?删除它们似乎对我的项目没有影响。有没有什么神秘的忍者原因让我留下他们?(甚至是为什么要首先制作它们?

最新版本的Ninject.MVC3在项目中创建一个名为App_Start的文件夹。此文件夹包含NinjectMVC3.cs类,它是Ninject框架的引导程序代码。它有两个程序集属性,用于启动和停止NinjectMVC3代码。正是这些属性导致WebActivator框架调用引导程序类方法并启动Ninject框架。安装NinjectMVC3还会添加Microsoft.Web.Infrastructure、Ninject、NinjectMVC3和WebActivator的程序集引用

NinjectMVC3类包含RegisterServices方法,您可以在其中添加代码以将接口绑定到其具体实现。这是您将编辑以配置依赖项的文件


这是在MVC应用程序中使用Ninject来处理依赖项所必需的,也是唯一的要求。有关向global.asax.cs添加代码的其他说明应忽略。

更新的文档:

此处的同一问题给出了简短的答案=“否”。这只是一个新的约定,它只对大型网站有意义,甚至还不确定

就我个人而言,我更喜欢处理全局应用程序类中的所有路由和过滤器覆盖,将所有公共内容转移到一个共享基类中,这样它就只包含特定于网站的代码。我认为也没有必要单独上课

ASP.NET特殊文件夹的常见情况是,它们提供不同的安全权限。是否有人知道在部分信任环境中是否需要此App_Start文件夹?i、 e.对于受限的web托管,这是唯一允许您调用函数来更改站点路由方式的地方吗


听起来微软有人正在考虑在将来增加这个安全层,如果它还没有的话。在我看到它的实际好处之前,我会删除它。

Ninject.MVC3的最新版本?我没有得到这个文件夹,但是我得到了一个AppStart_NinjectMVC3.cs文件/类,它对设置Ninject非常重要。是的,这是最新版本。我在发布这篇文章之前,在3分钟前的一个测试项目中拉了它。我得到一个文件夹
App_Start
,其中有一个文件
NinjectMVC3.cs
,其中包含一些方法(不起作用)。我不明白为什么我会想要这些。我甚至在逻辑树中找不到调用它们的位置。@Ciel-VS2010/.NET 4/MVC3项目?是的。我单击Visual Studio 2010(SP1),单击“创建项目”,单击“ASP.NET MVC 3应用程序”,使用Razor视图引擎获取默认值,打开nuGet控制台,键入“install package Ninject.MVC3”,然后按Enter键,所有这些都出现了。@Ciel——这也许可以解释这一点。我正在使用右键单击“添加库引用”对话框添加Ninject.MVC3。我只是在一个新的(空的)项目中尝试了一下,结果包括在我的答案中。我不完全确定我是否理解。所以我现在必须在两个地方注册所有东西?我需要成为这个“WebActivator”的一部分吗?没有它,一切都很顺利,我现在需要它做什么?没有明确说明是否需要
NinjectMVC3.cs
文件,它只是说它是在NuGet获得包时生成的。我的应用程序继承自
NinjectHttpApplication
,但我仍然必须引用此
Microsoft.Web.Infrastructure.dll
WebActivator.dll
程序集,不管怎样,我仍然必须使用这个
NinjectMVC3.cs
文件?@Ciel-如果您按照指示从NinjectHttpApplicationModule继承代码并将代码添加到global.asax.cs,这些都是旧指示,可以忽略。-已经8天了…谢谢你,雷莫。所以基本上,它们是两种不同的方式来做同一件事,我可以做任何我觉得舒服的事情?@Ciel-@Remo的评论无法抵挡,如果你是从软件包管理器安装的,我会遵循NuGet方式。当我升级到最新的NuGet版本(从稍旧的版本)时,它改变了当前的配置。我不希望您删除该文件,然后包更新失败。阅读Remo的描述,App_Start方法的引入只是为了从NuGet安装程序中自动集成,而不是作为继承的连接方式。我可以由此推断,除非他对开发的立场有所改变,否则他无意打破典型的惯例而支持自动化惯例。虽然我可能是错的,就像我猜的那样。再次感谢你,雷莫@tvanfosson:你是对的,这会更方便,但是说实话,亲自布线教给我的不仅仅是让包管理器来做。我认为PackageManager更像是一个简单的下载存储库,而不是一个实现工具。我理解并完全同意这种WebActivator方法,但这并不是我了解事物如何工作的方式。没有实习可以不放弃对任何一种方法的支持。但我认为如果从NuGet安装,NuGet的方式会更舒适。它允许安装需要从HttpApplication派生的多个包。以及依赖项(如WebActivator)将