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\

ms732012.note(zh-cn,VS.100).gif注意:
在 Windows Vista 上运行 ServiceModel 注册工具时,“Windows 功能”对话框可能不会反映出已打开“Microsoft .NET Framework 3.0”之下的“Windows Communication Foundation HTTP 激活”选项。可通过以下方法访问“Windows 功能”对话框:依次单击“开始”“运行”,然后键入“OptionalFeatures”

下表介绍可用于 ServiceModelReg.exe 的选项。

选项 说明

-i

注册此版本的 WCF,并更新位于 Internet 信息服务 (IIS) 元数据库根目录下的脚本映射或根目录下的所有脚本映射。较低版本的现有脚本映射将升级到此版本。

-ir

注册此版本的 WCF(仅注册)。不在 IIS 中安装 WCF 脚本映射。

-iru

注册此版本的 WCF。如果有任何现有应用程序使用 WCF,请不要在 IIS 中更新这些应用程序的脚本映射。

-u

注销此版本的 WCF。此版本的现有脚本映射重新映射到计算机上其余已安装的 WCF 的最高版本。

-ua

注销计算机上所有版本的 WCF。

-r

重新注册此版本的 WCF,并更新位于 IIS 元数据库根目录下的脚本映射或根目录下的所有脚本映射。不管原始版本如何,现有脚本映射都将升级到此版本。

-s:<路径>

以递归方式在指定路径为此版本的 WCF 注册脚本映射。

-sn:<路径>

以非递归方式在指定路径为此版本的 WCF 注册脚本映射。

-k:<路径>

以递归方式从指定路径中移除任何版本的 WCF 的所有脚本映射。

-kn:<路径>

以非递归方式从指定路径中删除任何版本的 WCF 的所有脚本映射。

-lv

列出计算机上注册的所有版本的 WCF,带有状态和安装路径。

-lk

列出已对 WCF 进行脚本映射的所有 IIS 元数据库项的路径和版本。不显示从父项继承 WCF 脚本映射的项。

-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'

从错误消息中,您应注意到早期的客户技术预览 (CTP) 版本安装了 System.ServiceModel 2.0.0.0 版程序集。而已发布 System.ServiceModel 程序集的当前版本为 3.0.0.0。因此,当您想要在安装过 WCF 早期 CTP 版本(但未完全卸载)的计算机上安装 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