2011-03-18 38 views
3

从NuGet下载Ninject.MVC3包创建此App_Start文件夹,其中包含一个简单的类;我甚至可以补充说,它甚至不是开箱即用的。我真的需要Ninject.MVC3中的App_Start内容吗?

通过它浏览,它似乎没有任何壮观的功能...或任何。我也没有在SampleApplication找到Ninject.Web.Mvc这个项目本身来自哪里。 (https://github.com/ninject/ninject.web.mvc/tree/master/mvc3/src/SampleApplication)

有人可以解释这个文件夹/类的目的吗?删除它们似乎对我的项目没有影响。有一些神秘的忍者之所以需要保持他们吗? (或者甚至为什么他们是在第一个地方?)

+1

最新版本的Ninject.MVC3?我没有得到这个文件夹,但是我得到了一个AppStart_NinjectMVC3.cs文件/类,这对于设置Ninject非常重要。 – tvanfosson 2011-03-18 16:57:38

+1

是的,这是最新版本。在发布之前,我在一个测试项目中仅仅3分钟之前就拉出了它。我用文件'NinjectMVC3.cs'得到一个文件夹'App_Start',它有一些方法(不起作用)。我无法弄清楚为什么我会想要这些。我甚至无法找到它们在逻辑树中被调用的位置。 – Ciel 2011-03-18 17:01:04

+0

@Ciel - VS2010/.NET 4/MVC3项目? – tvanfosson 2011-03-18 17:34:51

回答

5
+0

谢谢,雷莫。所以基本上他们有两种不同的方式来做同样的事情,而且我可以做我喜欢的任何一个。 – Ciel 2011-03-18 18:09:22

+0

@Ciel - @ Remo的评论是不可抵挡的,如果你是从包管理器安装的话,我会遵循NuGet的方式。当我升级到最新的NuGet版本(来自我稍微老的版本)时,它改变了当前的配置。我恨你删除该文件,然后让你的软件包更新失败。 – tvanfosson 2011-03-18 18:11:10

+0

是的 - 他们做同样的 – 2011-03-18 18:11:48

1

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

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

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

+0

我不完全确定我明白。所以我现在必须在两个地方注册一切吗?我需要成为这个'WebActivator'的一部分?没有它,事情一直很好,我现在需要什么? – Ciel 2011-03-18 17:55:54

+1

https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application没有真正清楚NinjectMVC3.cs文件是否为_required_,它只是说它是当你通过NuGet获得包装时就会产生。我有我的应用程序继承自'NinjectHttpApplication',但我仍然必须引用这个'Microsoft.Web.Infrastructure.dll'和'WebActivator.dll'程序集,而且我仍然必须使用这个'NinjectMVC3.cs'文件,无论如何, – Ciel 2011-03-18 17:58:13

+1

@Ciel - 如果您按照说明从NinjectHttpApplicationModule继承并向global.asax.cs添加代码,那些指令就是旧指令,可以忽略AFAIK。 – tvanfosson 2011-03-18 17:58:50

0

同样的问题给出了简单的答案= “否”。这只是一个新的惯例,只对大型网站有意义,甚至不确定。

http://weblogs.asp.net/pjohnson/archive/2012/09/07/mvc-4-and-the-app-start-folder.aspx

我个人更喜欢以应对全球应用类的所有路由和过滤器覆盖,整体平移共同的东西到一个共享的基类,所以它仅包含网站的特定代码。我认为不需要单独的课程。

ASP.NET特殊文件夹的常见情况是它们提供了不同的安全权限。有没有人知道这个App_Start文件夹在部分信任环境中是否必要?即使用受限的虚拟主机,这是唯一允许您调用函数来改变网站路由方式的地方吗?

听起来像MS的某个人正在考虑将此作为未来安全层的附加层,如果它尚未存在的话。直到我看到这个真实世界的好处,我会删除它。