WCF服务调用通过两种常用的方式:一种是借助代码生成工具SvcUtil.exe或者添加服务引用的方式,一种是通过ChannelFactory直接创建服务代理对象进行服务调用。 下面简单说下如何通过SvcUtil.exe的方式调用服务: SvcUtil.exe是一个命令行工具,位于:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin 目录下,可以将SvcUtil.exe添加到VS2010中方便以后的运用,添加方式:在VS2010的 Tools菜单中选择External Tools,如下图 ? 点击添加按钮,在Title栏输入SvcUtil,Command栏选择SvcUtil.exe所在的目录,Initial directory栏选择生成的客户端代码和配置文件所放的目录,选上Prompt for
此过程使用由 WCF 提供的 ServiceModel Metadata Utility Tool (Svcutil.exe)。 如何:配置基本 Windows Communication Foundation 客户端 描述如何配置使用 ServiceModel Metadata Utility Tool (Svcutil.exe 如何:使用 Windows Communication Foundation 客户端 描述如何使用 ServiceModel Metadata Utility Tool (Svcutil.exe
可以使用下列语法,从命令行中使用 svcutil.exe 工具来进行此操作: svcutil.exe http://leo-pc/IISHostService/Service1.svc? wsdl 按照提示直接用svcutil.exe http://admin-pc/IISHostService/Service1.svc?wsdl命令去生成代码,就出现了开头说的那个错误。
可以使用下列语法,从命令行中使用 svcutil.exe 工具来进行此操作: svcutil.exe http://leo-pc/IISHostService/Service1.svc? wsdl 按照提示直接用svcutil.exe http://admin-pc/IISHostService/Service1.svc?wsdl命令去生成代码,就出现了开头说的那个错误。
可以使用下列语法,从命令行中使用 svcutil.exe 工具来进行此操作: svcutil.exe http://jimmycntvs:90/WCF/CalculateService.svc? Studio Tools-->Visual Studio 2008 Command Prompt进到vs2008的命令行 输入刚才的命令,并加一个参数/d:c:\123\ 即输出文件保存在c:\123目录中 svcutil.exe CalculateService.cs加到Client项目中,同时在Client项目中,增加一个App.Config,然后把output.Config的内容复制到App.Config中 这一步的目的在于利用svcutil.exe
1.获取服务协定、绑定和地址 --通常,可以通过使用ServiceModel Metadata Utility Tool(Svcutil.exe)完成此操作 从服务中下载元数据,并使用您选择的语言将其转换到托管源代码文件中 System.TimeoutException和System.ServiceModel.CommunicationException异常 5.配置和保护客户端 --服务协定的安全要求已在服务协定接口中声明,并且如果Svcutil.exe
图1 WCF多线程应用的三种典型场景 为了方便客户端进行异步的服务调用,最简便的方式就通过SvcUtil.exe这个代码生成工具帮助我们生成机遇异步调用的服务代理类。 由于SvcUtil.exe同时也为VS提供了添加服务引用的实现,异步服务代理也可以通过添加服务引用的方式创建。 一、异步服务代理的创建 对于任何一个服务操作,不管它是否采用了异步的实现方式,也不管是否采用单向的消息交换模式,我们均可以通过添加服务引用或者直接使用SvcUtil.exe的方式创建异步服务代理,对服务进行异步调用
步骤: 1.把同样的WCF服务,在多个端口上"启动"(即同时运行多个wcf的实例,但每个实例都监听不同的端口) 2.用svcutil.exe生成的代理类,里面有N多构造函数的重载版本,观察一下类似下面的这个版本
Users = e.Result.ToArray(); 三、通过svcutil生成客户端代理类,并通过重写客户端的服务契约,完成对服务端服务的异步吊用 新建名为Client1的客户端控制台程序,通过svcutil.exe 工具生成的客户端代理类,,异步调用WCF服务 (1)、打开cmd,输入cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin (2)、输入svcutil.exe
配置成功了 客户端调用发布的服务 如果根据默认 svcutil.exe http://localhost:1100/service?
发布后,在浏览器中访问http://ip/Service.svc,可以正常浏览,但svcutil.exe 显示的是域名:http://域名/Service.svc。
使用svcutil.exe工具进行测试,出现下面的问题。
And most of all: NEVER EVER let Visual Studio (Add Service Reference) or svcutil.exe screw up your config
我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码和配置;通过ChannelFactory<TChannel>创建服务代理对象。
其帮助像SvcUtil.exe这样的代码生成工具有效的生成客户端代码和配置,其整体结构如下图所示。
Single = 2, 我这里是通过IIS进行承载服务的,然后通过svcutil.exe生成客户端代理类和配置文件。 GetOperationCount是用来返回在服务中Operation的次数 最后还是通过IIS来承载WCF服务,并通过svcutil.exe来获取当前服务的客户端代理类和客户端文件配置 通过上面代码可见
工具:ServiceMetadata工具(svcutil.exe)用于客户机生成的WCF服务而WSDL.EXE工具用来产生相同web服务。
Console.Read(); } } } ok,第一种客户端添加引用的方式测试成功 3、新建名为Client1的客户端控制台程序,通过svcutil.exe
导航已阻止"的错误,没关系,把localhost换成计算机名(本例中为jimmycntvs)就正常了,如下图: 三.Web 客户端开发 1.先生成服务端WCF的代理 vs2008命令行下运行 svcutil.exe
在客户端,我们具有两种典型的服务代理创建方式,其一是通过诸如SvcUtil.exe这样的工具导入服务的元数据生成相应的服务代理(一个继承自ClientBase<T>的类型)代码和相关配置;其二是直接通过相应的终结点信息