无法处理消息,因为内容类型“application/soap+msbin1”不是预期的类型“text/xml”

Posted

技术标签:

【中文标题】无法处理消息,因为内容类型“application/soap+msbin1”不是预期的类型“text/xml”【英文标题】:Cannot process the message because the content type 'application/soap+msbin1' was not the expected type 'text/xml 【发布时间】:2014-10-25 20:41:41 【问题描述】:

我有一个 Silverlight 应用程序,可以在我的开发环境(Win 7)中成功调用 WCF。当我检查 Fiddler 中返回的内容类型时,它显示如下。

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 18849
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 01 Sep 2014 14:59:01 GMT

但是,一旦我在我的 QA 服务器 (IIS 6.0) 中部署应用程序,对 WCF 服务的调用就会失败并出现以下错误(再次来自 Fiddler)

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

我想知道为什么它从 text/xml 改变; charset=utf-8 in dev 到 application/soap+msbin1 部署时。

我已经阅读了不匹配的绑定是原因,并尝试验证客户端和服务器之间的所有内容是否匹配,但我无法获得内容类型匹配。

以下是我的配置的 sn-ps。

Web.Config

 <system.serviceModel>
    <bindings>

        <basicHttpBinding>
            <binding name="DataSoap" maxBufferSize="2147483647"  maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
            <binding name="DataSoap1" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
        </basicHttpBinding>
       </bindings>
    <services>
        <service name="MyApp.Web.GetData" behaviorConfiguration="MyApp.Web.GetData" >
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="DataSoap"  contract="MyApp.Web.GetData" />
            <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="MyApp.Web.GetData">
                <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
                <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
            </behavior>
            <behavior name="">
                <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

下面是ServiceReferences.ClientConfig

<configuration>
<system.serviceModel>        
    <bindings>            
        <basicHttpBinding>
            <binding name="DataSoap" maxBufferSize="2147483647"  maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
            <binding name="DataSoap1" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
        </basicHttpBinding>           
        <customBinding>
            <binding name="CustomBinding_GetData">
                <binaryMessageEncoding />
                <httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint address="//localhost/MyApp/Webservice/Data.asmx"
            binding="basicHttpBinding" bindingConfiguration="DataSoap"
            contract="ServiceReference1.DataSoap" name="DataSoap" />

        <endpoint address="//localhost/MyApp/Webservice/GetData.svc"
            binding="basicHttpBinding" bindingConfiguration="DataSoap1"
            contract="GetData.GetData" name="CustomBinding_GetData" />
    </client>
</system.serviceModel>

【问题讨论】:

【参考方案1】:

我的工作与我所做的类似 security mode="None" 并且现在为我工作。 你可以试试看。但是,如果您必须使用安全模式,我认为您应该尝试另一种类型的绑定,例如 WSHttpBinding 而不是 basicHttpBinding

P.D. 5个月延迟答复^^

【讨论】:

以上是关于无法处理消息,因为内容类型“application/soap+msbin1”不是预期的类型“text/xml”的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

无法处理该消息,因为内容类型“应用程序/xml”不是预期的类型“应用程序/soap + xml”;字符集 = utf-8 '

Java SOAP 消息内容类型

由于异常 'application/soap+xml; 无法处理该消息;不是预期的类型“应用程序/soap+msbin1”