Asp.net-Mvc-3
ASP.NET MVC 3:將應用程序移動到虛擬目錄中。我必須改變什麼?
我一直在開發 MVC 3 應用程序。我使用的是 VS 2010 的內置 Web 伺服器。
今天,由於各種原因,我被要求將其移動到一個虛擬目錄並在 IIS 7 下執行它,仍然在我的開發 PC 上。
現在它的 URL
localhost/MyVirtualDirectory與 相對localhost:12345,我需要更改什麼才能使路由工作,以及在哪裡?我沒有使用任何原始的 HTML 錨標記或重定向,
@Html.ActionLink等等。根據我所讀到的,如果我一直以 MVC 方式做事,那麼這種變化應該是透明的。但是一開始,身份驗證後重定向失敗。成功認證後,它應該返回結果
this.RedirectToAction("index", "Home")你猜對了:而不是
/MyVirtualDirectory/Home重定向到/Home. 哪個失敗了。所以缺少一些需要設置的東西。它是什麼?
在 IIS 中,選擇您的虛擬目錄和“轉換為應用程序”。此外,如果您在 Global.asax 中使用預設路由映射,它應該是這樣的:
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults );推理:如果您將 MVC 應用程序放在另一個應用程序的子目錄中,那麼 IIS 將考慮該應用程序的根目錄而不是您的 MVC 應用程序的根目錄。如果這是您想要的行為(不太可能),那麼您需要修改 Global.asax 以考慮到這一點:
routes.MapRoute( "Default", // Route name "MyVirtualDirectory/{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults );