[英]MVC 3 Deployment to IIS6
最初,我使用一些DLL設置部署網站來復制本地(如另一個SO帖子上的haacked建議)。 在此失敗后,我在服務器上安裝了MVC 3軟件包。
當我點擊我的網站時,我得到:
目錄列表被拒絕此虛擬目錄不允許列出內容。
我看到haacked的博客 ,但現在差不多3歲了,其中一些不再適用了。 在服務器上安裝MVC 3之后,有誰知道我們需要做些什么才能讓它工作?
UPDATE
我在haacked的博客上找到了另一個鏈接 。 顯然,這應該工作(不需要做通配符映射)。 我的網站虛擬目錄設置為運行ASP.NET 4.0.30319,我已經安裝了ASP.NET MVC 3,我正在運行IIS6(Windows Server 2003 R2,非常確定是IIS6)。
虛擬目錄設置為ASP.NET 4.0。 而“默認網站”設置為運行ASP.NET 2.0。 除了virt之外,我更改了“默認網站”以運行4.0。 目錄,它開始工作。 原因對我來說是個謎,但它確實奏效了。
聽起來你沒有設置通配符映射。 您需要在IIS中配置映射,將所有請求發送到ASP.NET管道進行處理。 由於您沒有設置映射,因此它將請求解釋為目錄瀏覽(在您的配置中可能不允許)。
我相信ASP.NET 4無擴展URL功能不適用於iis v6上的虛擬目錄,除非默認網站也設置為運行ASP.NET v4.0。 對我來說,將ASP.NET v4.0設置為默認網站不是一種選擇,因為它破壞了現有的v2.0虛擬目錄webapps。 在mvc3虛擬目錄webapp上添加通配符應用程序映射對我有用。 以下是我將mvc部署到iis6上的步驟列表。
關於WILCARD應用程序映射 : 請注意,此選項會導致IIS攔截對Web服務器發出的每個請求。 這包括對圖像,經典ASP頁面和HTML頁面的請求。 因此,啟用通配符腳本映射到ASP.NET確實會影響性能 。
其他解決方案:在帶有IIS6的W2K3 SP2中,.NET Framework(2,3.5,4)。
轉到注冊表:
HKEY_LOCAL_MACHINE \\ SOFTWARE \\微軟\\ ASP.NET \\ 4.0.30319.0
如果必要,請創建值為0的 DWORD EnableExtensionlessUrls 。
然后從命令窗口執行:resetiis
從MVC3模板創建ASP.NET應用程序。
現在在global.asax設置路線,如:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//routes.MapRoute(
// "Default", // Route name
// "{controller}.mvc/{action}/{id}", // URL with parameters
// new { controller = "Home", action = "Index", id = "" } // Parameter defaults
//);
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "About", id = "" }
);
}
為.NET Framework 4創建AppPool並設置Web應用程序以使用此apppool。 您可以使用Denis Bauer的ASP.NET版本切換器或使用Aspnet_regiis.exe。
結果:瀏覽器顯示de About頁面作為默認頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.