在VS2008 SP1中WCF Tool的一些使用技巧

在这篇文章中,我将向大家分享一下在VS2008 SP1中WCF工具的一些使用技巧,希望能帮助大家更好的使用它们。

WCF Test Client: 如何更改存放客户端配置临时文件和assembly临时文件的文件夹

在VS2008 SP1之前,WCF Test Client将客户端配置临时文件和assembly临时文件存放在“My Document”文件夹。当这个文件夹被设置到网络上的另一台电脑上,WCF Test Client可能会无法调用服务。错误信息如下:“An error occurred creating the configuration section handler for system.serviceModel/bindings: That assembly does not allow partially trusted callers…”。

clip_image002

clip_image004

在VS2008 SP1中,我们做了如下改进:

首先,我们将默认文件夹从“My Document”改成%temp%。%temp%文件夹被设置到网络上的可能性相对“My Document”要小很多。

其次,我们也提供了可以改变默认文件夹的命令行工具。你可以把文件夹从%temp%改成任意指定的文件夹,而且也可以恢复成%temp%。关于这些命令的具体格式请参考下面的贴图。

clip_image006

svcutil的版本较老时, WCF Test Client无法添加服务

有时候,当svcutil.exe没有被正确安装或者安装的版本较老时(在Windows SDK v6.1文件夹中),WCF Test Client无法添加服务。错误信息如下:“Error: Unrecognized option ‘targetclientversion’ specified.”。

clip_image008

请先确认下列的版本信息:

- 在Windows SDK v6.0A文件夹中的SvcUtil.exe的版本号是3.0.4506.648或更高

- 在Windows SDK v6.1文件夹中的SvcUtil.exe的版本号是3.0.4506.648或更高

- WcfTestClient.exe 的版本号是9.0.588.0或更高

如果svcutil.exe的版本号是老的或者没有被正确安装,解决的方法是:

- 安装最新的Windows SDK

- 或者从Windows SDK v6.0A 文件夹复制svcutil.exe 到Windows SDK v6.1文件夹中

安装Biztalk Services SDK将在WCF Test Client中引入一个无法识别的endpoint

如果你安装了VS2008 SP1后再安装Biztalk Services SDK,Biztalk Services SDK会在machine.config文件的<system.serviceModel>中的<client>部分引入一个endpoint。

然后,每次在WCF Test Client中添加一个服务时,会生成一个无法识别的endpoint(服务合同是IMetadataExchange),而WCF Test Client如下图所示报错:“The contract ‘IMetadataExchange’ in clinet configuration does not match the name in service contract…”。

clip_image010

当你按下“OK”按钮,这个多余的“IMetadataExange (sb)”部分就会出现在服务节点内。如下图所示:

clip_image012

这并不会影响WCF Test Client的功能。当你需要用WCF Test Client测试不同的服务,你可以采用下面的方法来避免频繁的报错信息:

当你需要运行WCF Test Client测试服务时,注释掉下面所列的machine.config文件中的配置信息(文件路径:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG)。当你需要使用Biztalk Services SDK时,再恢复这些配置。

<client>

<endpoint address="" binding="relayBinding" bindingConfiguration="metadataExchangeRelayBinding"

contract="IMetadataExchange" name="sb" />

</client>

<bindings>

<relayBinding>

<binding name="metadataExchangeRelayBinding" />

</relayBinding>

</bindings>

某些时候VS2008 SP1的安装不当会导致Service Configuration Editor不能在Visual Studio中启动

A customer reported an issue, and I would like to share with you here.

我想在这里和大家分享一个客户报告的问题。

这个用户原来在他的电脑上安装过VS2008 SP1 Beta版、 .net3.5 SP1 Beta版 和Windows SDK v6.1。然后他安装了VS2008 SP1和.net3.5 SP1的正式版。他的安装过程可能有一些不恰当的步骤。

然后,他在Visual Studio 中用我们团队开发的WCF Service Library模板创建了一个WCF服务项目,他试着用右键菜单启动Service Configuration Editor(SvcConfigEdior.exe)编辑app.config文件,这时Visual Studio中弹出一个报错对话框:”Can not find C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\svcconfigeditor.exe”,如下图所示:

clip_image014

这里有两个问题:

- 在Windows SDK v6.0A文件夹中的 SvcConfigEditor.exe不见了

- 在安装了Windows SDK v6.1后,Windows SDK v6.0A 仍然被设置成缺省的 SDK,这导致Visual Studio还是试着从Window SDK v6.0A 下寻找SvcConfigEditor.exe

要解决以上问题,我建议使用“Windows SDK Configuration Tool”重新设置缺省的 SDK。

要避免以上问题,请在安装正式版本前确认已经卸载了所有的程序包括更新。

clip_image016