Asp.net-Mvc-3

ASP.NET MVC 3:將應用程序移動到虛擬目錄中。我必須改變什麼?

  • December 31, 2020

我一直在開發 MVC 3 應用程序。我使用的是 VS 2010 的內置 Web 伺服器。

今天,由於各種原因,我被要求將其移動到一個虛擬目錄並在 IIS 7 下執行它,仍然在我的開發 PC 上。

現在它的 URLlocalhost/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
);

引用自:https://stackoverflow.com/questions/8042832