【问题标题】:What is the default WCF Binding?什么是默认的 WCF 绑定?
【发布时间】:2011-09-09 23:10:54
【问题描述】:

我在this problem 上苦苦挣扎了几天,在这个过程中学到了很多关于绑定的东西。 不过,有一件事让我感到困惑:各种链接(例如,参见 this 或 that)明确声明“默认情况下,WCF 项目是使用 WsHttpBinding 创建的”,但这不是我所看到的。 我就是这样做的:

  1. 打开 Visual Studio 2010 并选择新建项目/Visual C#/WCF 服务应用程序
  2. 不要触摸代码中的任何内容,为服务设置一个本地 IIS Url(比如http://localhost/WcfService7)
  3. 打开soapUI,选择File/New Soap UI Project/输入新创建的wsdl的url:http://localhost/WcfService7/Service1.svc?wsdl,其他选项不要碰
  4. 接口属性:SOAP Version = SOAP 1.1, Binding = "BasicHttpBinding_IService1"(虽然它只是一个名字,但它是一个提示)
  5. 打开 Altova XmlSpy 并选择 SOAP / 创建新的 SOAP 请求 / 输入 wsdl 的 url / 选择任何操作
  6. SOAP / 更改 SOAP 请求参数 / 确保选中“作为 SOAP+XML (SOAP 1.2) 发送”
  7. SOAP / 向服务器发送请求:我收到错误

    HTTP 错误:无法在服务器“localhost”上发布文件“/WcfService7/Service1.svc”(415)

    将肥皂数据发送到“http://localhost/WcfService7/Service1.svc”时出错 HTTP 错误:无法在服务器“10.51.0.108”上发布文件“/WcfService7/Service1.svc”(415)

有什么解释吗?谢谢

【问题讨论】:

    标签: wcf wcf-binding


    【解决方案1】:

    当使用默认 .svc 文件(不更改其服务主机工厂)在 IIS 中托管 WCF 服务(使用 WCF 服务应用程序项目模板)时,默认绑定为 basicHttpBinding。如果您想将默认绑定更改为wsHttpBinding,您必须使用:

    <protocolMapping>
        <add scheme="http" binding="wsHttpBinding"/>
    </protocolMapping>
    

    在您的服务配置文件中,但它不会解决您的问题,因为您不需要 wsHttpBinding,而且我记得 Altova XmlSpy 无法发送对 wsHttpBinding 的有效请求,因为它仅支持没有 WS 的基本 SOAP 堆栈-* 协议。

    【讨论】:

      【解决方案2】:

      默认是使用 SOAP 1.1 的基本 httpbinding。

      这就是您将其作为 SOAP 1.2 发送时出错的原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 2017-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多