2011-03-18 41 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的某個人正在考慮將此作爲未來安全層的附加層,如果它尚未存在的話。直到我看到這個真實世界的好處,我會刪除它。