2010-07-31 50 views
4

比方說,我有一個具有Asp.net的WebForms應用:在根文件夾運行MVC中的子文件夾Asp.net的WebForms應用

  • 幾個* .aspx文件,作爲Web窗體應用程序(不涉及路由運行)
  • 的子目錄下,即FormsFolder已在它的其他文件和子文件夾,作爲一個常規的網絡運行窗體應用程序
  • 的子目錄下,MvcFolder有一個Asp.net MVC應用程序的正常結構和運行它的內容作爲一個以及
  • 路由使用此應用程序的(如果你喜歡這兩個應用或)的HttpModule而不是global.asax
  • 兩部分都必須在相同的IIS應用程序下運行的登記(所以有兩個應用程序,僅可以使用虛擬目錄)

這裏有一些問題:

  1. 在所有可能這種情況?
  2. 是否有可能將MVC應用程序附加到WebForms應用程序而不更改以後的任何代碼?可以更改配置,但應儘可能避免使用子文件夾配置。
  3. 是否可以將UrlRoutingModule配置爲僅在針對特定子文件夾發出請求時運行,但未在應用程序的其他部分中配置?

回答

4

事實上,這是可能的,因爲它們將在同一應用程序的上下文中運行,所以它不應該成爲問題。您可能需要做的是爲您的視圖註冊一個新的ViewEngine,指向/ MvcFolder/Views。應用程序的根目錄仍然是〜/因此您可能需要確保您的路線將此考慮在內,例如,通過像'MvcFolder/{控制器}/{動作}'等路由規則。

MVC和WebForms應用程序可以並排運行,沒有問題。在請求到達WebForms HttpHandler之前,UrlRoutingModule將匹配任何規則,所以請謹慎選擇任何規則,如「DoSomething.aspx」,因爲這將被MVC攔截。

如果您選擇不在基本web.config中註冊UrlRoutingModule,則可以將其註冊到/MvcFolder/web.config文件中。這將停止在/ MvcFolder之外匹配任何路線。

爲什麼要在HttpModule中註冊規則?這些將針對每個請求運行,因此您確定您沒有不必要地在每個請求中註冊規則?

+0

關於自定義視圖引擎的好主意。 – 2010-07-31 17:43:06

+0

我正在註冊模塊中的規則,因爲我不允許更改webform的應用程序global.asax文件和類。我的模塊以某種方式工作,所以它只註冊一次路由**而不總是。看看這個問題,你會發現,實際上有可能攔截http模塊中的應用程序啓動事件,即使它不直接受支持。 http://stackoverflow.com/questions/3370839 – 2010-07-31 17:44:29