WCF 生成 SOAP1.2 协议格式WSDL

2021-01-18  乐帮网

wcf

我在开发具有soap 1.2监听点的WCF服务。 该WCF服务使用以下自定义绑定:

<customBinding>
        <binding name="httpsBinding" openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00">
          <transactionFlow />
          <security authenticationMode="UserNameOverTransport" allowInsecureTransport="true" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" >
            <secureConversationBootstrap allowInsecureTransport="true"></secureConversationBootstrap>
          </security>
          <textMessageEncoding messageVersion="Soap12">
            <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                maxBytesPerRead="2147483647"
                maxNameTableCharCount="2147483647" />
          </textMessageEncoding>
          <httpsTransport maxReceivedMessageSize="2147483647"  />
        </binding>
      </customBinding>

使用以上配置程序,再通过fiddler调试,发送和接受的数据包的格式都正确 使用格式(soap 1.2)。数据包含如下特征:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header>...

WSDL上没有http://www.w3.org/2003/05/soap-envelope的引用。 尽管调用方法时它工作正常,但是这一直是个问题,因为WSDL没有正确描述服务。

解决以上问题只需要修改web.config 或者 app.config 文件,修改如下:

<Configuration>
    <webServices>
        <protocols>
            <remove name="HttpSOAP"/>
            <add name="HttpSOAP12" />
        </protocols>
    </webServices>
</configuration>

现在soap12的命名空间是需要声明: xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" ,经过修改发现以修改后有了soap1.2标识。

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力