ASP.NET IIS 註冊工具 (Aspnet_regiis.exe)
ASP.NET IIS 註冊工具 (Aspnet_regiis.exe) 的用途是在網際網路資訊服務 (IIS) 註冊 ASP.NET 應用程式。 本主題說明使用此工具的選項、語法及其他資訊。
您可以使用 ASP.NET IIS 註冊工具,執行如下所示的工作:
在 IIS 註冊或移除 .NET Framework ASP.NET 安裝。
建立新的 ASP.NET 應用程式集區。
顯示所有已安裝 ASP.NET 版本的狀態。
重要
隨附於 .NET Framework 4 版 的 Aspnet_regiis 的版本有新的功能和能力,摘要列於選項 區段中。不過,這些功能都只有當您在 Windows Vista、Windows Server 2008 或 Windows 7 上安裝 .NET Framework 4 時才會提供。如果您在 Windows XP 或 Windows Server 2003 的任何版本上安裝 .NET Framework 4 版,工具的運作方式都會與在 .NET Framework 3.5 版和較早版本中相同。如需 Aspnet_regiis 如何在 Windows XP 或 Windows Server 2003上運作方式的詳細資訊,請參閱 .NET Framework 3.5 版的 ASP.NET IIS 註冊工具 (英文)。
.NET Framework 4 可以與舊版的 .NET Framework 並存安裝在單一電腦上。 如果先前已在電腦上啟用 IIS,.NET Framework 的安裝程序就會自動在 IIS 註冊 ASP.NET 4。 不過,如果在啟用 IIS 之前安裝 .NET Framework 4,您必須執行 ASP.NET IIS 註冊工具,才能在 IIS 註冊 .NET Framework,並建立使用 .NET Framework 4 的應用程式集區。
警告
如需如何找到 Aspnet_regiis.exe 正確版本的詳細資訊,請參閱本主題稍後的尋找 Aspnet_regiis.exe 的正確版本一節。
aspnet_regiis [options]
選項
若要在 IIS 註冊 ASP.NET 應用程式,您所需的選項通常不外乎 i、ir、iru 和 enable 選項。
選項 |
描述 |
---|---|
-c |
當您在 ASP.NET 第 4 版下執行應用程式時的不適用舊版選項。 如需這個選項如何在上一版的 ASP.NET 運作的詳細資訊,請參閱 .NET Framework 3.5 版的 ASP.NET IIS 註冊工具 (英文)。 |
-disable |
在 IIS 6.0 和以傳統模式執行的 IIS 7.0 中,可停用 ASP.NET ISAPI 擴充功能。 此命令不適用於整合模式中的 IIS 7.0。 這個選項只能搭配 -i、-ir 或 -r 選項使用。 IIS 6.0 之前的 IIS 版本不提供此選項。 |
-e |
從每個 IIS 網站目錄的 aspnet_client 子目錄,移除 ASP.NET 的用戶端程式碼。 只會移除與 Aspnet_regiis.exe 相關聯之 ASP.NET 版本的用戶端指令碼。 |
-ea |
從每個 IIS 站台目錄的 aspnet_client 子目錄中,移除所有 ASP.NET 版本的用戶端指令碼。 |
-enable |
在 IIS 6.0 和使用傳統模式的 IIS 7.0 中,這個選項會啟用 ASP.NET ISAPI 擴充功能。 此命令不適用於整合模式中的 IIS 7.0。 這個選項只能搭配 -i、-ir 或 -r 選項使用。 IIS 6.0 之前的 IIS 版本和 ASP.NET 2.0 版之前的 ASP.NET 版本,都不提供此選項。 |
-ga user |
授與指定的使用者或群組存取權限,以便存取 ASP.NET 所使用的 IIS Metabase 以及其他目錄。 您通常會在建立自訂服務帳戶時使用這個選項。 如需詳細資訊,請參閱 HOW TO:建立 ASP.NET 2.0 應用程式的服務帳戶 (英文)。 ASP.NET 2.0 之前的 ASP.NET 版本不提供這個選項。 對於在 Windows Vista、Windows Server 2008 或 Windows 7 上的安裝,這個選項可讓您設定群組的 ACL。 注意 當指定本機使用者或群組時,ASP.NET 版本 3.5 及較舊版本所提供的 Aspnet_regiis.exe 版本會失敗。 |
-i |
安裝 ASP.NET 4,並更新現有的應用程式以使用應用程式集區的 ASP.NET 4 版本。 這會在 IIS Metabase 中同時更新 IIS 傳統模式及 IIS 整合模式的處理常式與指令對應。 這個選項會建立兩個應用程式集區 ASP.NET v4.0 和 ASP.NET v4.0 Classic。 DefaultAppPool 應用程式集區和 Classic .NET AppPool 應用程式集區都是設定為 CLR 的 .NET Framework 4 版本。 32 位元版本的 Aspnet_regiis.exe 只有將 32 位元 Scriptmap 加入至 Applicationhost.config 檔。 64 位元版本的 Aspnet_regiis.exe 會將 32 位元和 64 位元的 Scriptmap 加入至 Applicationhost.config 檔。 這是因為啟用 Windows 7 的 64 位元版 Windows Vista、 Windows Server 2008或 IIS 7.0 安裝也提供 Windows on Windows 64-bit (WOW64) 支援。 注意 在作業系統的 [Windows 功能] 對話方塊中,沒有選取 ASP.NET 整合的選項。(這個選項在 [網際網路資訊服務 ] 區段中)。[Windows 功能] 對話方塊只會顯示 ASP.NET 2.0 整合的狀態。它並不會顯示第 4 版的相關資訊。 |
-ir |
安裝和註冊 ASP.NET 4。 這個選項與 -i 選項相同,但是它不會變更與任何現有應用程式集區相關聯的 CLR 版本。 |
-iru |
如果 ASP.NET 目前沒有在 IIS 註冊,就會執行針對 -i 說明的工作。 如果上一版的 ASP.NET已經在 IIS 註冊,此選項就會執行針對 -ir 說明的工作。 |
-k path |
Windows Vista、Windows Server 2008或 Windows 7 下不支援此選項。 如需當您在 Windows XP 或 Windows Server 2003下執行時,此選項如何運作的詳細資訊,請參閱 .NET Framework 3.5 版的 ASP.NET IIS 註冊工具 (英文)。 |
-kn path |
Windows Vista、Windows Server 2008或 Windows 7 下不支援此選項。 如需當您在 Windows XP 或 Windows Server 2003下執行時,此選項如何運作的詳細資訊,請參閱 .NET Framework 3.5 版的 ASP.NET IIS 註冊工具 (英文)。 |
-lk |
列出 ASP.NET 對應的所有 IIS Metabase 索引鍵的路徑和版本。 Windows Vista 及更新版本不支援此選項。 不會顯示從父索引鍵繼承 ASP.NET Scriptmap 的索引鍵。 |
-lv |
列出電腦上安裝的所有 ASP.NET 版本之狀態和安裝路徑。 |
-norestart |
Windows Vista、Windows Server 2008或 Windows 7 下不支援此選項。 如需當您在 Windows XP 或 Windows Server 2003下執行時,此選項如何運作的詳細資訊,請參閱 .NET Framework 3.5 版的 ASP.NET IIS 註冊工具 (英文)。 |
-r |
執行 -i 中所描述的工作,而且還會將所有應用程式集區都切換為使用 .NET Framework 4 CLR。 |
-s path |
更新指定應用程式與所有子應用程式的 scriptmaps 和應用程式集區指派作業。 對於非根 Web 應用程式 (不是 W3SVC\ 或 W3SVC\ROOT),非根 Web 應用程式及其所有子應用程式的應用程式集區設定會複製到新的應用程式集區,其名稱為 ASP.NET V4.0 original application pool name。然後,非根 Web 應用程式便會移至新的應用程式集區。 新的應用程式集區與原始應用程式集區有相同的設定,只不過複本會對應到.NET Framework 4 CLR,而且具有 ASP.NET 4 設定。 如果新的應用程式集區 ASP.NET V4.0 original application pool name 已經存在,就會略過建立和複製應用程式集區的步驟。 Aspnet_regiis.exe 會改用現有的應用程式集區,並設定它使用 .NET Framework 4 CLR,但是不進行其他任何變更。 工具接著將指定的應用程式及其子應用程式移到對應的應用程式集區複本。 現有的應用程式集區設定會維持不變。 如果指定的應用程式是 Web 根目錄 (W3SVC\ 或 W3SVC\ROOT),Aspnet_regiis.exe 就會更新所有的應用程式集區,以使用 .NET Framework 4 CLR 和 ASP.NET 4。 |
-sn path |
執行 -s 中所描述的工作,只是在 -sn 並非遞迴的這一點上有所不同。 只更新特定應用程式的 scriptmap 和應用程式集區指派作業。 沒有子應用程式有變更。 如果指定的應用程式是 Web 根目錄 (W3SVC\ 或 W3SVC\ROOT),Aspnet_regiis.exe 就會將名為 DefaultAppPool、Classic .NET AppPool、ASP.NET V4.0 和 ASP.NET V4.0 Classic 的應用程式集區變更為使用 .NET Framework 4 CLR 與 ASP.NET 4。 |
-u |
解除安裝時,留下兩個 4 版的應用程式集區,保留曾經在這兩個 4 版應用程式集區中的任何應用程式。 這個選項也會移除應用程式集區對應至 .NET Framework 4 CLR 的 managedRuntimeVersion 屬性。 這會將應用程式集區還原為執行階段的 IIS 7.0 預設值,在 Windows Vista、Windows Server 2008 或 Windows 7 上是 2.0。 選項會移除所有明確設定的第 4 版處理常式與模組對應。 它也會移除所有 Scriptmap (32 位元和 64 位元),無論是使用 Aspnet_regiis.exe 的 32 位元或 64 位元版本。 |
-ua |
解除安裝時,留下兩個 4 的應用程式集區版本,並保留曾經在這兩個版本 4 之應用程式集區中的任何應用程式。 這個選項會移除 Applicationhost.config 檔案中的所有 ASP.NET 註冊 (2.0 和 4 這兩個版本)。 它也會移除所有 Scriptmap (32 位元和 64 位元),無論是使用 Aspnet_regiis.exe 的 32 位元或 64 位元版本。 現有的應用程式集區仍然會與 .NET Framework 2.0 相關聯,因為這是 managedRuntimeVersion 屬性的預設值。 |
-? |
顯示 ASP.NET IIS 註冊工具的命令語法和選項。 |
組態選項
選項 |
描述 |
---|---|
-config+ |
啟用 ASP.NET 組態的遠端存取。 |
-config- |
停用 ASP.NET 組態的遠端存取。 |
-pa container account |
授與存取權限給指定的使用者或群組 account,以存取指定的金鑰容器。 這個選項可以使用下列修飾詞:
|
-pc container |
在指定的容器中建立 RSA public/private 金鑰組。 這個選項可以使用下列修飾詞:
|
-pd section |
解密組態區段。 此引數可以使用下列參數:
|
-pdf section webApplicationDirectory |
解密指定的實體 (非虛擬) 目錄之 Web.config 檔的指定組態區段。 |
-pe section |
加密指定的組態區段。 這個選項可以使用下列修飾詞:
|
-pef section webApplicationDirectory |
加密指定的實體 (非虛擬) 目錄之 Web.config 檔的指定組態區段。 |
-pi container file |
將 RSA public/private 金鑰組從指定的 XML file 匯入指定的 container。 這個選項可以使用下列修飾詞:
|
-pr container account |
移除指定之使用者或群組 account 存取指定之金鑰容器的權限。 這個選項可以使用下列修飾詞:
|
-px container file |
將 RSA public/private 金鑰組從指定的容器匯出至指定的 XML 檔案。 這個選項可以使用下列修飾詞:
|
-pz container |
刪除指定的金鑰容器。 這個選項可以使用下列修飾詞:
|
備註
當多個 ASP.NET 版本安裝在電腦上時,ASP.NET 版本就是並存執行。 在這種情況下,您必須設定 IIS 來表示哪個版本的 ASP.NET ISAPI (aspnet_isapi.dll) 應該處理 ASP.NET 應用程式中的頁面。 在 IIS 7.0 的傳統和整合式模式中,為應用程式集區設定的 CLR 版本會決定使用哪個版本的 ASP.NET 及其相關聯的 CLR 版本來執行應用程式。 在 IIS 6.0 中,會使用 scriptmap 讓應用程式與特定的 ASP.NET ISAPI 版本產生關聯,ISAPI 版本則判斷該使用哪一個 CLR 版本來執行應用程式。
Aspnet_regiis.exe 有 32 位元和 64 位元的版本。 對於 Windows Vista 和 Windows Server 2008,您可以在 IIS 的 64 位元安裝上執行 32 位元版本的工具。 這可讓您在同一個 64 位元系統上執行混合的 32 位元和 64 位元工作處理序。 下表列出在 64 位元版本的 IIS 上執行 32 位元版本的工具時會出現的特殊情況和限制。
IIS 版本 |
32 位元版本 Aspnet_regiis.exe 的特殊情況 |
---|---|
6.0 |
您可以在 Windows Server 2003 上的 64 位元 IIS 6.0 安裝下執行 32 位元版的 Aspnet_regiis.exe,但有下列限制:
|
7.0 |
在 Windows Vista、Windows Server 2008 或 Windows 7上,當您在 IIS 7 下執行 32 位元版本的 Aspnet_regiis.exe 時,此工具不會自動設定 applicationPools 項目的 enable32BitAppOnWin64 屬性。 在預設的 64 位元作業系統安裝上,啟用 Windows on Windows 64 情況下,您可以使用 32 位元的 Aspnet_regiis.exe 來設定 IIS 7,但您將無法執行任何 32 位元應用程式,除非您明確變更 enable32BitAppOnWin64 屬性以便讓應用程式能在 Windows on Windows 64 中執行。 如需 IIS 7.0 組態選項的詳細資訊,請參閱 Applicationhost.config 檔案中 applicationPools 項目的說明文件。 |
ASP.NET IIS 註冊工具通常搭配 -s 或 -sn 選項使用,將 ASP.NET 應用程式重新對應至其所關聯的 .NET Framework 版本。 請使用 -s 選項更新指定根路徑及其所有子目錄中的應用程式。 如果您不想更新子目錄中的應用程式,請使用 -sn 選項。
注意
path 參數會參考應用程式的根路徑,而非實體路徑。例如,W3SVC/1/ROOT/SampleApp1。
您也可以使用 ASP.NET IIS 註冊工具檢視 ASP.NET 的相關資訊。 若要列出所有安裝在電腦中的 ASP.NET 版本的狀態和安裝路徑,請使用 -lv 選項。
-norestart 選項會防止 World Wide Web Publishing Service 在安裝或更新 ASP.NET 指令碼對應後重新啟動。 如果您要使用 IIS 執行多個網站,而這些網站是在不同應用程式集區中,但是您不希望讓所有網站都重新啟動,請使用這個選項。
在網際網路資訊服務主控台應用程式上使用 [ASP.NET] 索引標籤所做的任何變更,也會造成所有應用程式集區進行回收。 如果您要在不會導致回收所有應用程式集區的情況下變更應用程式所使用的 ASP.NET 版本,請執行下列二項命令來變更該版本。
aspnet_regiis -s w3svc/<instance>/root -norestart
iisapp /a <app pool> /r
ASP.NET IIS 註冊工具也可以用來安裝和解除安裝 ASP.NET 的連結版本。 使用 -i 選項可以安裝 ASP.NET,並更新所有現存 ASP.NET 應用程式的指令碼對應。 使用 -ir 選項可以安裝 ASP.NET,而不更新指令碼對應。 若要解除安裝與工具相關聯的 ASP.NET 版本,請使用 -u 選項。 如果您想要從電腦解除安裝 ASP.NET 的所有版本,請使用 -ua 選項。
您也可以使用 ASP.NET IIS 註冊工具檢視 ASP.NET 的相關資訊。 若要列出所有安裝在電腦中的 ASP.NET 版本的狀態和安裝路徑,請使用 -lv 選項。 如果您想要查看 ASP.NET 對應的所有 IIS Metabase 索引鍵路徑,請使用 -lk 選項。
您可以使用 Aspnet_regiis.exe 來安裝和移除系統用戶端指令碼,例如用於用戶端驗證的指令碼。 使用 -c 選項可以安裝與工具相關聯之 ASP.NET 版本的用戶端指令碼。 (指令碼安裝在每個 IIS 網站目錄的 Aspnet_client 子目錄中)。若只要移除與工具相關聯之 ASP.NET 版本的用戶端指令碼,請使用 -e 選項。 若要移除所有已安裝之 ASP.NET 版本的用戶端指令碼,請使用 -ea 選項。
在使用模擬時,如果模擬帳戶沒有 IIS Metabase 的「讀取」存取權,當您嘗試存取 DirectoryEntry 時,便會擲回顯示「拒絕存取」訊息的 COMException 例外狀況。 當應用程式的 Code 子目錄存在於應用程式根目錄時,便會發生這種情形。 當應用程式對應至 UNC 共用,而且 UNC 帳戶沒有該 Metabase 的讀取權限時,也會發生這種錯誤。 遇到這兩種情況時,配合模擬帳戶或 UNC 帳戶的 -ga user 選項來執行 ASP.NET IIS 註冊工具,便可修正這項問題。
如需 Scriptmap 和應用程式根路徑的詳細資訊,請參閱 Microsoft 網站上的 IIS 文件。
範例
下列命令會安裝與您使用中 ASP.NET IIS 註冊工具版本相關聯的 ASP.NET 版本,並更新現有的 ASP.NET 應用程式。 在 IIS 6.0 中,這個命令會更新現有 ASP.NET 應用程式的 Scriptmap,這些應用程式目前對應至舊版的 ASP.NET。 在 IIS 7.0 中,這個命令會在 IIS Metabase 中更新傳統模式和整合模式處理常式。 這也會將 DefaultAppPool 和 Classic .NET AppPool 應用程式集區切換為使用 .NET Framework 4 CLR。
aspnet_regiis -i
下列命令會安裝與工具相關聯的 ASP.NET 版本,而不會更新現有的應用程式。 在 IIS 7.0 中,這個命令不會更新與 DefaultAppPool 及 Classic .NET AppPool 應用程式集區相關聯的 .NET Framework 版本。
aspnet_regiis -ir
下列命令會顯示電腦上安裝之所有 ASP.NET 版本的狀態和安裝路徑。
aspnet_regiis -lv
下列命令會更新 Web 應用程式及其所有子應用程式,以使用與工具相關聯的 ASP.NET 版本。 在 IIS 6.0 中,會更新 Scriptmap。 在 IIS 7.0 中,會將應用程式對應至新的應用程式集區。
aspnet_regiis -s W3SVC/1/ROOT/SampleApp1
下列命令會執行與 -s 命令相同的函式,但它並不會影響子目錄中的應用程式。
aspnet_regiis -sn W3SVC/1/ROOT/SampleApp1
下列命令會將存取權限授與指定的使用者或群組帳戶,以便存取 IIS Metabase 和 ASP.NET 所使用的其他目錄。
aspnet_regiis -ga MyUserGroup W3SVC/1/ROOT/SampleApp1
尋找 Aspnet_regiis.exe 的正確版本
Aspnet_regiis.exe 安裝在 Microsoft .NET Framework 目錄中。 如果電腦正在並存執行多個 .NET Framework 版本,就可能會安裝此工具的多個版本。 下表將針對不同的 .NET Framework 版本列出此工具的安裝位置。
.NET Framework 的版本 |
Aspnet_regiis.exe 檔案的位置 |
---|---|
.NET Framework 1 版 |
%windir%\.NET\Framework\v1.0.3705 |
.NET Framework 1.1 版 |
%windir%\Microsoft.NET\Framework\v1.1.4322 |
.NET Framework 2.0 版、3.0 版和 3.5 版 (32 位元系統) |
%windir%\Microsoft.NET\Framework\v2.0.50727 |
.NET Framework 2.0 版、3.0 版和 3.5 版 (64 位元系統) |
%windir%\Microsoft.NET\Framework64\v2.0.50727 |
.NET Framework 4 版 (32 位元系統) |
%windir%\Microsoft.NET\Framework\v4.0.30319 |
.NET Framework 4 版 (64 位元系統) |
%windir%\Microsoft.NET\Framework64\v4.0.30319 |
.NET Framework 3.0 和 3.5 版的目錄沒有此工具的複本。 如需詳細資訊,請參閱 Scott Hanselman 部落格上的文章如何將 IIS 應用程式或應用程式集區設定為使用 ASP.NET 3.5 而非 2.0 (英文)。