如何在运行时通过URL使用WCF Web服务?

Ash*_*shu 15 wcf wcf-binding wcf-client

我想通过URL访问服务中公开的所有方法.如果假设URL将是:

http://localhost/MyService/MyService.svc
Run Code Online (Sandbox Code Playgroud)

我如何访问方法:

  1. 如果我想有一个ServiceReference
  2. 如果没有服务参考,我该怎么办?

mar*_*c_s 21

要使用WCF服务,您需要创建WCF客户端代理.

在Visual Studio中,您可以右键单击该项目,然后从上下文菜单中选择"添加服务引用".键入要连接的URL,如果该服务正在运行,您应该获得为您生成的客户端代理文件.

此文件通常包含一个名为MyService Client的类- 您可以实例化该类,您应该可以看到该客户端类上的所有可用方法.

如果您不想在Visual Studio中添加服务引用,则可以通过执行svcutil.exe命令行工具来实现相同的结果- 这也将为您生成客户端代理类的所有必需文件.

更新:
如果你想在运行时初始化客户端代理,你绝对可以这样做 - 你需要决定使用哪个绑定(传输协议),以及连接到哪个地址,然后你可以这样做:

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8888/MyService");

MyServiceClient serviceClient = new MyServiceClient(binding, address);
Run Code Online (Sandbox Code Playgroud)

但即使在这种情况下,您也需要先使用"添加服务引用"或svcutil.exe工具导入并创建代理客户端.


Ste*_*gli 8

在没有服务参考的情况下回答如何做到这一点.看看这里(选项#a):

编写第一个WCF客户端

您仍然需要一些引用(即对包含合同/接口的程序集的引用),但您不提供服务引用.

编辑: 虽然以上是可能的,我不推荐它.当您必须生成这样的代理时,性能并不是很好.我通常使用svcutil.exe并创建一个包含我的客户端的程序集,并创建对该程序集的引用.这样您就可以有更多选项来控制代理的外观.