WCF和肥皂1.1

Sil*_*sen 26 .net c# wcf soap web-services

我正在尝试创建一个第三方应该有望消费的服务.
使用者与SOAP 1.1兼容,这就是我为服务器使用basicHttpBinding的原因.当提出实际请求时,服务器期望的内容类型似乎出现了问题.使用basicHttpBinding我不明白为什么服务器仍然需要'application/soap + xml',据我所知,这只是SOAP 1.2所要求的.

我已经使用过wireshark来弄清楚这两个人正在沟通的内容.请参阅下面的tcp流和设置.

任何帮助表示赞赏.

第三方应用请求

POST/HTTP/1.1

SOAPAction:http: //tempuri.org/ITestService/Hello

Content-Type:text/xml; 字符集= utf-8的

主持人:shdesktop:8000

内容长度:297

期待:100-继续

连接:关闭

WCF服务器响应

HTTP/1.1 415无法处理消息,因为内容类型为'text/xml; charset = utf-8'不是预期的类型'application/soap + xml; 字符集= UTF-8' .

内容长度:0

服务器:Microsoft-HTTPAPI/2.0

日期:2010年2月9日星期二14:03:19 GMT

连接:关闭

服务配置

<system.serviceModel>
    <services>
      <service behaviorConfiguration="behTestService" name="ConsoleApplication1.TestService">
        <endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange" />
        <endpoint address="TestService" binding="basicHttpBinding"
            contract="ConsoleApplication1.ITestService" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behTestService">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 19

basicHttpBinding确实使用SOAP 1.1 - 但在这种情况下,您将拥有一个内容类型application/soap+xml.

既然你的客户端正在发送text/xml- 他们有机会期待一个REST接口吗?这将由WCF处理webHttpBinding.

MSDN WCF REST开发人员中心上阅读有关WCF中REST的更多信息,并查看有关WCF REST的Pluralsight 截屏系列 - 强烈推荐!

  • @Silas:"旧式"ASP.NET webservices(ASMX)**和**WCF basicHttpBinding使用SOAP 1.1 - 所以应该没问题,真的.您需要检查您的客户端是否向您发送SOAP请求,或者只是尝试将XML发布到您的URL (2认同)

Shi*_*iji 7

通常,当我们在包含文本的Web服务中收到消息/错误时:

content type 'text/xml'
Run Code Online (Sandbox Code Playgroud)

这意味着Web服务器返回了错误页面而不是预期的xml响应.