【问题标题】:How can I change the endpoint address programmatically in the client site?如何在客户端站点中以编程方式更改端点地址?
【发布时间】:2009-12-30 07:48:17
【问题描述】:

如何在客户端站点中以编程方式更改端点地址?

【问题讨论】:

    标签: wcf


    【解决方案1】:
    proxy.Endpoint.Address = new EndpointAddress("http://newaddress");
    

    其中proxy 是导入WSDL 时生成的客户端类的实例。或者您可以在创建客户端代理时指定地址:

    var endpoint = new EndpointAddress("http://newaddress");
    var proxy = new SomeClientProxy("BasicHttpBinding_IHelloWorld", endpoint);
    

    【讨论】:

    • 您实际上无法在创建代理后更改端点 - 您必须在调用代理上的第一个方法之前执行此操作。
    • 好点@marc_s。这是否意味着我给出的第一个示例不起作用,或者只有在调用第一个方法之前完成才能起作用?
    • @Darin:我认为如果您在服务上的方法已经被调用后尝试这样做,它会抛出异常(虽然不是 100% 肯定)。最佳做法是在任何调用之前始终先进行这些设置:-)
    • 帮助。如果我不改变任何东西,我对服务的调用就可以了。如果我更改 URL(使用与上面类似的代码),我会收到 SecurityNegotiationException。我什至将 URL 设置为与调用之前相同的值(实际上,什么都没有改变)。
    【解决方案2】:

    http://deadkota.wordpress.com/2010/06/23/wcf-client-change-endpoint-address-dynamically/

    using(abcServiceClient proxy = new ABCServiceClient())
    {
        proxy.Endpoint.Address = new System.ServiceModel.EndpointAddress("net.tcp://localhost:8082/ABCService");
        proxy.Open();
        proxy.Function();
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多