【问题标题】:WCF - consuming web services (https/ssl/mtom/user/password) - how to configure client?WCF - 使用 Web 服务 (https/ssl/mtom/user/password) - 如何配置客户端?
【发布时间】:2011-09-13 11:58:30
【问题描述】:

我需要使用具有以下要求的网络服务:

  • https/ssl
  • MTOM
  • 需要在 SOAP 标头中指定用户/密码
  • 1 个(可能很大)二进制文件作为有效负载

我无法控制此 Web 服务,需要使用它。由于我是 WCF 新手,我需要一些基本知识的帮助。我的问题是:

  1. 当我在 VS2010 中添加服务引用时,我在配置中得到了一个基本的 httpbinding。我想我必须使用 wshttpbinding,对吗?我在哪里/如何更改/配置它?直接在配置中?
  2. 如何配置我的客户端以在soap标头中指定用户/密码?
  3. 如何“附加”二进制文件?

谢谢

【问题讨论】:

    标签: wcf authentication wcf-binding wcf-security mtom


    【解决方案1】:

    我找到了一篇关于如何使用 WCF 配置 MTOM 客户端的好文章。这是一个非常基础的教程。希望对你有帮助。

    http://mstecharchitect.blogspot.com/2009/01/wcf-with-mtom-message-encoding.html

    【讨论】:

      【解决方案2】:

      通常在使用 Web 服务时,不需要更改绑定。

      您可能需要指定客户端凭据。

         Service1Client service = new Service1Client();
         service.ClientCredentials.UserName.UserName = "user";
         service.ClientCredentials.UserName.Password = "pass";
      

      参见this 文章。

      【讨论】:

        【解决方案3】:

        如果您添加服务参考并且您没有在配置文件中收到任何错误、警告或任何注释部分,则您已经拥有了您需要的内容。只需使用您获得的代码即可。该参考将为您创建客户端代理,这将具有将二进制数据传递到服务器所需的方法。代理还允许设置客户端凭据:

        var proxy = new ServiceContractNameClient();
        proxy.ClientCredentials.UserName.Name = "userName";
        proxy.ClientCredentials.UserName.Password = "pwd";
        var result = proxy.SendSomeVeryLargeData(new SomeDataContract() { Data = yourData });
        

        BasicHttpBinding 支持 SOAP 标头中的凭据和 MTOM 编码。

        【讨论】:

        • 这样做,user/pwd会在soap header中吗?
        • 那是由绑定定义的。如果您使用 HTTPS + SOAP 标头添加对 WCF 服务的服务引用以进行身份​​验证,则应该已经为您定义了它。您可以检查配置中的绑定是否使用<security mode="TransportWithMessageCredential">
        猜你喜欢
        • 2010-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        相关资源
        最近更新 更多