Windows Communication Foundation (WCF) 测试客户端(WcfTestClient.exe)是一种 GUI 工具,使用户能够输入测试参数,将该输入提交到服务,并查看服务发送回的响应。 它与 WCF 服务主机结合使用时提供无缝的服务测试体验。
通常可以在以下位置 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE
找到 WCF 测试客户端(WcfTestClient.exe):社区可能是“企业”、“专业”或“社区”之一,具体取决于安装了哪个级别的 Visual Studio。
使用测试客户端的场景
以下部分讨论了最常见的方案,你可以使用 WCF 测试客户端简化开发过程。
Visual Studio 内部
WCF 服务主机使用单个服务启动 WCF 测试客户端
创建新的 WCF 服务项目并按 F5 启动调试器后,WCF 服务主机将开始在项目中托管服务。 然后,WCF 测试客户端将打开并显示配置文件中定义的服务终结点列表。 可以测试参数并调用服务,并重复此过程以持续测试和验证服务。
WCF 服务主机使用多个服务启动 WCF 测试客户端
还可以使用 WCF 测试客户端来帮助调试包含多个服务的服务项目。 WCF 测试客户端打开时,它会自动遍历项目中的服务列表,并逐项检查以进行测试。
Visual Studio 外部
还可以在 Visual Studio 外部调用 WCF 测试客户端(WcfTestClient.exe),以在 Internet 上测试任意服务。 若要找到该工具,请转到以下位置:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE
(社区可以是“企业”、“专业”或“社区”之一,具体取决于计算机上安装的 Visual Studio 级别)
若要使用该工具,请双击文件名以从此位置打开它,或从命令行启动它。
WCF 测试客户端采用任意数量的 URI 作为命令行参数。 这些是可以测试的服务的 URI。
wcfTestClient.exe URI1 URI2 …
打开 WCF 测试客户端窗口后,单击“文件>添加服务”,并输入要打开的服务的终结点地址。
WCF 测试客户端用户界面
可以将 WCF 测试客户端与单个服务或多个服务一起使用。
服务操作
WCF 测试客户端主窗口的左窗格列出了所有可用的服务及其各自的终结点和操作。
双击某个操作时,可以在以该操作名称命名的新选项卡的右窗格中查看其内容。
左窗格还列出了客户端配置文件。 双击任一项,在右窗格中的新选项卡式窗口中显示文件的内容。
输入测试参数
若要查看测试参数,请双击一个操作以在右侧窗格中打开。 参数默认显示在 “格式化 ”视图中,可以为参数输入任意值来测试服务。
若要查看消息的 XML,请单击 “XML”。 若要将其发送到服务,请单击“ 调用”。
对于 DataSet 参数,请单击“编辑”旁边的 ...按钮,在显示 DataGrid 的新窗口中对其进行编辑。 请注意 复制数据集 和 粘贴数据集 按钮的外观。 如果在第一次编辑时 DataSet 对象的架构未知,则 DataGrid 为空。 必须将具有相同架构的 DataSet 对象粘贴到 DataGrid 中的当前对象中。 (请注意,需要在粘贴作之前从其他位置复制架构。还可以通过单击“ 复制数据集 ”按钮复制数据集对象以供将来使用。
服务的响应显示在测试参数下方。
注释
如果预期的返回值为字符串,则即使提供的输入不在引号中,结果也会显示为带引号的字符串。
如果在为服务创建契约时将特定操作指定为单向操作,则不会显示任何服务响应。 一旦消息排队进行传递,就会弹出一个对话框,通知你已成功发送消息。
会话支持
在服务操作选项卡中,通过“启动新代理”复选框可以切换会话支持功能。 默认情况下会清除此框。
输入特定操作的测试参数(或在同一服务终结点的其他操作)并在清空复选框后多次单击调用时,这些操作将共享一个代理,服务状态将在多个操作之间持续保持。
如果选中了 “启动新代理 ”复选框,则会为每个 Invoke 启动新代理,结束上一个会话方案,并重置服务状态。
编辑客户端配置
WCF 测试客户端主窗口的左窗格列出了客户端配置文件。 双击任意项以显示右窗格中文件的内容。
使用服务配置编辑器进行编辑
在左窗格中右键单击 “配置文件 ”,然后选择“ 使用 SvcConfigEditor 编辑”上下文菜单。 使用客户端配置内容启动服务配置编辑器。 可以编辑配置并将其保存在工具中。
在服务配置编辑器中保存文件后,WCF 测试客户端会显示一条警告消息,告知文件已在外部修改,并询问是否要重新加载该文件。
如果选择 “是”,则“Client.dll.config”选项卡中的配置内容反映编辑器中所做的更改。
如果选择“ 否”,则“Client.dll.config”选项卡中的配置内容保持不变,修改的内容将自动保存到源文件中。
还原到默认配置
如果要取消所有更改并还原到默认客户端配置,请右键单击左窗格中的 “配置文件 ”,然后选择上下文菜单 “还原到默认配置”。将加载默认配置值,并还原“Client.dll.config”选项卡中的内容。
验证更改
在 WCF 测试客户端中加载保存的更改时,将检查配置是否针对 WCF 架构的有效性。 如果找到错误,将显示一个对话框以显示错误详细信息。
在代理生成、二进制编译或服务调用期间,将禁用支持编辑(即“编辑...”、“还原...”等)的菜单项。 将更新的配置加载到 WCF 测试客户端时,也会禁用服务调用。
保留客户端配置
“工具->选项->客户端配置”选项卡包含“启动服务时始终重新生成配置”选项,该选项默认处于启用状态。 此选项指定每次 WCF 测试客户端加载服务时,都会根据最新的服务协定和服务 App.config 文件重新生成配置文件。
如果已编辑 WCF 服务的客户端配置,并且希望始终使用此更新的文件来调试服务,则可以取消选中“ 重新生成 ”选项。 为此,即使更新服务并重新打开 WCF 测试客户端,Client.dll.config 文件也是之前更新的文件,而不是基于更新的服务重新生成的文件。
但是,可能需要编辑配置文件,使其与重新生成的代理保持一致。 如果由于更新的服务而重新生成代理和配置文件不匹配,则在调用服务时将发生错误。
谨慎
如果修改了客户端配置文件并选择在将来重复使用它,则可以在以下位置找到该文件:
\Documents and Settings\[User Account]\My Documents\Test Client Projects。
存储到客户端配置文件的任何更新凭据信息都受此文件夹的访问控制列表(ACL)的保护。
添加、删除和刷新服务
添加服务
单击“文件>添加服务”,将服务添加到 WCF 测试客户端。 然后,需要键入要添加的服务的 URI(终结点地址)。 服务的地址可以是 mex 地址或 WSDL 地址。
可以在最近服务子菜单中找到最近添加的 10 个服务的端点列表。 如果选择其中一个服务,则会将指定的服务添加到 WCF 测试客户端。
还可以右键单击服务树“ 我的服务项目”的根目录,然后选择“ 添加服务 ”以实现相同的结果。
在代理生成、二进制编译或服务调用期间,将禁用支持添加服务的菜单项。 服务调用也被禁用。
移除服务
右键单击要删除的服务的服务根目录,然后选择“ 删除服务 ”以从 WCF 测试客户端中删除服务。
在代理生成、二进制编译或服务调用期间,支持删除服务的菜单项将被禁用。 服务调用也被禁用。
刷新服务
如果在 WCF 测试客户端运行时对服务进行了更改,并且你想要确保该服务的 WCF 测试客户端实现 up-to-date,请右键单击该服务的服务根目录,然后选择“ 刷新服务”。 请注意,刷新后,服务状态将重置。
在代理生成、二进制编译或服务调用期间,将禁用支持刷新服务的菜单项。 服务调用也被禁用。
测试客户端生成的文件的位置
默认情况下,WCF 测试客户端将生成的客户端代码和配置文件存储在“%appdata%\Local\temp\Test Client Projects”文件夹中。 WCF 测试客户端退出后,将删除此文件夹。 如果在 WCF 测试客户端中修改了配置文件,并且禁用“ 启动服务”选项时始终重新生成配置 选项,则将修改后的文件复制到“My Documents\Test Client Projects”下的“CachedConfig”文件夹中,并将映射(metadata-address-to-file-name)XML 文件作为索引。
还可以在命令行中启动 WCF 测试客户端,使用 /ProjectPath
开关指定存储生成的文件的新所需路径,或使用 /RestoreProjectPath
开关还原默认位置。 语法如下所示:
wcfTestClient.exe /ProjectPath [desired ___location]
运行此命令不会打开 WCF 测试客户端。 仅更改文件夹位置。 无论 WCF 测试客户端是否正在运行,都可以运行此命令。 重新启动 WCF 测试客户端时,将应用新位置。 位置信息可以保存在注册表中,也可以保存在“%appdata%\Local\temp\Test Client Projects”文件夹中的 WcfTestClient.exe.option 文件中。
WCF 测试客户端支持的功能
下面是 WCF 测试客户端支持的功能列表:
服务调用:请求/响应和单向消息。
绑定:Svcutil.exe 支持的所有绑定。
控制会话。
消息协定。
XML 序列化。
以下是 WCF 测试客户端不支持的功能列表:
类型:Stream、Message、XmlElement、XmlAttribute、XmlNode和实现IXmlSerializable接口的类型,包括相关XmlSchemaProviderAttribute属性,以及XDocument和XElement类型及ADO.NETDataTable类型。
双工协定。
交易。
安全性:CardSpace、证书和用户名/密码。
绑定:WSFederationbinding、任何上下文绑定和 Https 绑定、WebHttpbinding(Json 响应消息支持)。
关闭 WCF 测试客户端
可以通过以下方式关闭 WCF 测试客户端:
在 “文件” 菜单中,单击 “退出” 。 或者,在 WCF 测试客户端主窗口中,单击“ 关闭”。 这两个操作还会关闭 WCF 服务自动主机,并在 WCF 测试客户端由 Visual Studio 启动时停止 Visual Studio 调试过程。
右键单击通知区域中的 WCF 服务主机 图标,然后单击“ 退出”。 这会关闭 WCF 服务自动主机和 WCF 测试客户端,并停止 Visual Studio 调试过程。