ServiceModel 註冊工具 (ServiceModelReg.exe)
這個命令列工具可以讓您在單一電腦上管理 ServiceModel 的註冊。
ServiceModelReg.exe [-i[r | ru] | -u | -ua | -r | -s:<path> | -sn:<path> | -k:<path> | -kn:<path> | -lv | -lk | -vi] [-q | -v] [-nologo] [-?]
備註
您可以在下列位置找到這個工具:
%SystemRoot%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
注意: |
---|
ServiceModel 註冊工具在 Windows Vista 上執行時,[Windows 功能] 對話方塊不會反映 [Microsoft .NET Framework 3.0] 下的 [Windows Communication Foundation HTTP 啟動] 選項已開啟。按一下 [開始],然後按一下 [執行],再輸入 OptionalFeatures,即可存取 [Windows 功能] 對話方塊。 |
下表說明可與 ServiceModelReg.exe 搭配使用的選項。
選項 | 描述 |
---|---|
-i |
註冊這個版本的 WCF,並更新網際網路資訊服務 (IIS) Metabase 根目錄處的 Scriptmap,和根目錄下的所有 Scriptmap。較低版本的現有 Scriptmap 會升級至這個版本。 |
-ir |
註冊這個版本的 WCF,僅註冊。不要在 IIS 中安裝 WCF Scriptmap。 |
-iru |
註冊這個版本的 WCF。如果有任何現有應用程式使用 WCF,請勿在 IIS 中更新其 Scriptmap。 |
-u |
移除註冊這個版本的 WCF。這個版本的現有 Scriptmap 會重新對應至電腦上所安裝其他 WCF 版本中的最高版本。 |
-ua |
移除註冊電腦上所有版本的 WCF。 |
-r |
重新註冊這個版本的 WCF,並更新網際網路資訊服務 (IIS) Metabase 根目錄處的 Scriptmap,和根目錄下的所有 Scriptmap。現有 Scriptmap 會升級至這個版本,無論原始版本為何。 |
-s:<path> |
以遞迴的方式在指定路徑註冊這個版本 WCF 的 Scriptmap。 |
-sn:<path> |
以非遞迴的方式在指定路徑註冊這個版本 WCF 的 Scriptmap。 |
-k:<path> |
以遞迴的方式從指定路徑移除任何版本 WCF 的所有 Scriptmap。 |
-kn:<path> |
以非遞迴的方式從指定路徑移除任何版本 WCF 的所有 Scriptmap。 |
-lv |
列出電腦上註冊的所有版本 WCF,以及狀態和安裝路徑。 |
-lk |
列出 WCF 由指令碼對應的所有 IIS Metabase 索引鍵的所有路徑,並列出其版本。從父索引鍵繼承 WCF Scriptmap 的索引鍵不會顯示。 |
-vi |
驗證目標元件的安裝,並產生報告。元件可能處於下列狀態:不明、尚未安裝、已安裝 (預設) 或已安裝 (自訂)。 |
-y |
在註冊或重新註冊元件前,不要求確認。 |
-q |
無訊息模式 (減少輸出)。 |
-v |
詳細資訊模式。 |
-nologo |
不顯示版權和橫幅訊息。 |
修正 FileLoadException 錯誤
如果您的電腦上已安裝舊版的 WCF,當您執行 ServiceModelReg 工具註冊新安裝時,可能會收到 FileLoadFoundException 錯誤。即使您已手動移除舊安裝中的檔案,但 machine.config 設定仍保留原封不動,仍將發生這種情形。
得到的錯誤訊息與以下類似。
Error: System.IO.FileLoadException: Could not load file or assembly 'System.ServiceModel, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'System.ServiceModel, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
您會在錯誤訊息中發現,先前發行的 Customer Technology Preview (CTP) 安裝了 System.ServiceModel Version 2.0.0.0 組件。System.ServiceModel 組件目前的版本是 3.0.0.0。因此,當您要在已安裝舊版 CTP WCF 的電腦上安裝 WCF 的正式版時,便會遇到這個錯誤。
ServiceModelReg.exe 無法清除舊版的項目,也無法註冊新版本項目。唯一的解決方法就是手動編輯 machine.config。您可以在下列位置找到這個檔案。
%windir%\Microsoft.NET\Framework\v2.0.50727\config\machine.config
如果您在 64 位元的電腦上執行 WCF,可以在這個位置編輯相同的檔案。
%windir%\Microsoft.NET\Framework64\v2.0.50727\config\machine.config
在這個檔案上找出所有參考 “System.ServiceModel, Version=2.0.0.0” 的 XML 節點,刪除這些節點及其任何子節點。儲存檔案並重新執行 ServiceModelReg.exe,便可解決這個問題。
範例
下列範例顯示如何使用 ServiceModelReg.exe 工具的 -s 和 -k 選項。
ServiceModelReg.exe -s:W3SVC/1/ROOT/SampleApp1
ServiceModelReg.exe -k:W3SVC/1/ROOT/SampleApp1