在同一 IIS 進程中不可能運行兩個不同的 ASP.NET 版本

 
在同一 IIS 進程中不可能運行兩個不同的 ASP.NET 版本。請使用 IIS 管理工具重新配置服務器以在一個單獨的進程中運行應用程序。

默認情況下,在已經安裝了運行庫的計算機上安裝 .NET Framework 時,所有 ASP.NET 應用程序都會自動更新以使用新安裝的 .NET Framework 版本。唯一的例外是那些綁定到不兼容的運行庫版本或更新的運行庫版本的應用程序。(兼容性通常由 .NET Framework 版本號決定。不同的主版本通常是不兼容的,而不同的次要更新和內部版本號是兼容的。)儘管更高版本的 .NET Framework 設計成具有向後兼容性,您仍可能需要相應地配置 ASP.NET 應用程序以使用特定版本的運行庫。

在管理安裝了多 個版本的 .NET Framework 的計算機時,查看 ASP.NET 應用程序的腳本映射(有時稱爲應用程序映射)以確定應用程序所使用的版本通常很有用。可以使用 Internet 信息服務 (IIS) 管理控制檯查看 ASP.NET 應用程序的腳本映射。

查看 ASP.NET 應用程序的腳本映射

  1. 打開 IIS 管理控制檯。

  2. 展開本地計算機節點,展開“網站”,然後展開“默認 Web 服務器”[Default Web Server]。

  3. 右擊應用程序的文件夾,然後單擊“屬性”。

  4. 在“目錄”選項卡上單擊“配置”。

    出現“應用程序配置”對話框。

  5. 在“映射”選項卡中,選擇ASP.NET 應用程序擴展名,如 .asmx 或 .aspx。

    對話框的“可執行文件路徑”列列出了到應用程序所使用的 ASP.NET ISAPI 擴展的路徑。默認情況下,ASP.NET ISAPI 擴展安裝在以下位置:

    %system root%/Microsoft.NET/Framework/versionNumber

    路徑中顯示的版本號說明了應用程序所使用的 ASP.NET ISAPI 擴展的版本號。反過來,ASP.NET ISAPI 擴展的版本確定了應用程序所使用的運行庫版本。

配置應用程序以使用腳本映射

爲 使重新配置 ASP.NET 應用程序的腳本映射更容易,每個 .NET Framework 安裝都提供了其自己版本的 ASP.NET IIS 註冊工具 (Aspnet_regiis.exe)。在 Web 服務器計算機上具有管理員特權的用戶可以使用該工具將 ASP.NET 應用程序重新映射到匹配該工具的 ASP.NET ISAPI 擴展版本。

注意

由 於 Aspnet_regiis.exe 工具與特定版本的 .NET Framework 相關聯,因此您必須使用適當版本的 Aspnet_regiis.exe 爲 ASP.NET 應用程序重新配置腳本映射。Aspnet_regiis.exe 工具將 ASP.NET 應用程序的腳本映射重新配置爲匹配該工具的 ASP.NET ISAPI 擴展版本。

此工具也可用來顯示所有已安裝的 ASP.NET 版本的狀態、註冊關聯的 ASP.NET 版本、創建客戶端腳本目錄以及執行其他配置操作。

使用 Aspnet_regiis.exe 更新某一 ASP.NET 應用程序的腳本映射

  1. 打開 Windows 命令窗口。

  2. 定位到包含要使用的 Aspnet_regiis.exe 工具版本的目錄。記住每一版本的 .NET Framework 都有自己的版本。文件通常位於以下目錄:

    %system root%/Microsoft.NET/Framework/versionNumber

  3. 使用 -s-sn 選項以及應用程序的路徑運行 Aspnet_regiis.exe 工具。

    下面的示例演示一個命令,該命令更新一個名爲 SampleApp1 的應用程序的腳本映射:

    Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

配置應用程序池

IIS 5.0 版使用 ASP.NET 進程模型 (Aspnet_wp.exe)。在 ASP.NET 進程模型下,每一個單獨的應用程序版本在運行時自動運行在獨立的進程中。定位到同一運行庫版本的所有應用程序共享同一進程(或網絡園模式中的多個進程)。 然而,IIS 6.0 使用 IIS 6.0 進程模型 (w3wp.exe),並使用一項隔離功能,稱爲應用程序池。只要應用程序共享同一池標識,應用程序池就允許它們在一個或多個進程中同時運行。如果應用程 序所分配的應用程序池不同,它們就永遠不能在同一進程中運行。

警告

IIS 6.0 僅在處於 IIS 5.0 隔離模式時支持 ASP.NET 版本 1.0。

如果在使用 IIS 6.0 的計算機上安裝了多個版本的 .NET Framework,您可能會在“應用程序事件”日誌中看到下面的錯誤信息:

“不能在同一 IIS 進程中運行不同版本的 ASP.NET。請使用 IIS 管理工具重新配置服務器,以便在單獨的進程中運行應用程序。”

如 果有多個版本的 ASP.NET 配置爲在同一進程中進行,就會發生該錯誤,因爲不同版本的 .NET Framework 和運行庫不能在同一進程中並行運行。因此,使用某一特定版本的運行庫的 ASP.NET 應用程序不能與使用其他版本的應用程序共享進程。如果兩個或多個應用程序被映射到不同版本的 ASP.NET,但共享同一應用程序池,通常就會發生這一錯誤。

注意

每個應用程序的進程隔離都是手動配置的。

在 IIS 6.0 中禁用 IIS 5.0 隔離模式

  1. 打開 IIS 管理控制檯。

  2. 右擊“網站”文件夾,然後單擊“屬性”。

  3. 在“服務”選項卡上,清除“以 IIS 5.0 隔離模式運行 WWW 服務”[Run WWW service in IIS 5.0 isolation mode]複選框。

在 IIS 6.0 中向某一 ASP.NET 應用程序分配池標識

  1. 打開 IIS 管理控制檯。

  2. 展開本地計算機節點,展開“網站”,然後展開“默認 Web 服務器”[Default Web Server]。

  3. 右擊應用程序的文件夾,然後單擊“屬性”。

  4. 在“目錄”選項卡上,從“應用程序池”列表選擇所需的池標識。

在 IIS 6.0 中創建池標識

  1. 打開 IIS 管理控制檯。

  2. 展開本地計算機節點。

  3. 右擊“應用程序池”文件夾,指向“新建”,再單擊“應用程序池”。

    出現“添加新應用程序池”對話框。

  4. 在“應用程序池”文本框中輸入新的池標識,再單擊“確定”。

    問題:在同一 IIS 進程中不可能運行兩個不同的 ASP.NET 版本。請使用 IIS 管理工具重新配置服務器以在一個單獨的進程中運行應用程序。
    解決方法:新建一個應用池就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章