簡體   English   中英

MVC 3部署到IIS6

[英]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管道進行處理。 由於您沒有設置映射,因此它將請求解釋為目錄瀏覽(在您的配置中可能不允許)。

來自Haacked

  1. 在網站的IIS屬性中,單擊“主目錄”選項卡。
  2. 單擊“配置...”按鈕。 在“映射”選項卡中,單擊“插入...”
  3. “通配符應用程序映射”標簽旁邊的文本框中,鍵入“c:\\ windows \\ microsoft.net \\ framework \\ v2.0.50727 \\ aspnet_isapi.dll”
  4. 取消選中標記為“驗證文件是否存在”的框,單擊“確定”

我相信ASP.NET 4無擴展URL功能不適用於iis v6上的虛擬目錄,除非默認網站也設置為運行ASP.NET v4.0。 對我來說,將ASP.NET v4.0設置為默認網站不是一種選擇,因為它破壞了現有的v2.0虛擬目錄webapps。 在mvc3虛擬目錄webapp上添加通配符應用程序映射對我有用。 以下是我將mvc部署到iis6上的步驟列表。

  1. ASP.NET v4已安裝在Windows 2003服務器上
  2. 安裝AspNetMVC3Setup.exe
  3. 將mvc3 webapp文件復制到服務器上,而不在bin文件夾中使用mvc3 dll
  4. 創建指向app文件夾的虛擬目錄
  5. 將ASP.NET版本設置為4.0.30319
  6. 將通配符應用程序映射添加到c:\\ windows \\ microsoft.net \\ framework \\ v4.0.30319 \\ aspnet_isapi.dll並取消選中驗證文件是否存在

關於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM