我在两台远程计算机上部署了WCF服务(假设WCFService1)。由于相同的服务部署在两台不同的机器上,因此它们具有通用接口和常用方法。

WCFService1部署在Machine1和Machine2上。

要从客户端计算机使用WCF服务,我创建了一个客户端应用程序:

  1. 我添加了WCF服务的设计时参考(WCFService1)(借助URL http://11.12.25.23/WCFService/Service1.svc )。

  2. 现在我可以调用服务中公开的方法。到目前为止它很好......

  3. 现在我的问题是如果我必须在运行时更新客户端,同一服务托管在具有不同URL的不同机器中(假设 http://12.12.24.24/WCFService/Service1.svc ),我该怎么做?

    目前我正在这样做:

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress address = new EndpointAddress("http://12.12.24.24/WCFService/Service1.svc");
    MyServiceClient serviceClient = new MyServiceClient(binding, address);
    

    但每当我用来调用服务中暴露的方法时,我都会遇到绑定错误匹配错误。

有帮助吗?

解决方案

您是否尝试过先调用您的客户?

例如:

MyWCFClient client = new MyWCFClient();
client.EndPoint.Address = new EndpointAddress("http://somewhere:888/here.svc");

其他提示

我怀疑,如果你查看Machine1上的web.config文件,你会看到绑定存在WSHttpBinding(或者与BasicHttpBinding不同的东西)。如果您将其更改为BasicHttpBinding(假设这是您真正想要的),您将删除此错误。

您的服务是如何配置的?向我们展示您的服务器端和客户端配置!

绑定不匹配意味着你要么不使用相同的绑定,要么绑定上的一些重要参数是不同的 - 必须有一些配置错误 - 所以请告诉我们配置!

马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top