Не удалось обработать сообщение, так как тип содержимого "application/soap+msbin1" не соответствует ожидаемому типу "text/xml"
У меня есть приложение Silverlight, которое успешно вызывает WCF в моей среде разработки (Win 7). Когда я проверяю тип содержимого, возвращенный в 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; кодировка = UTF-8'.
Мне интересно, почему он меняется с text/xml; charset=utf-8 в dev для application/soap+msbin1 при развертывании.
Я прочитал о несоответствующих связываниях, являющихся причиной, и попытался проверить, что каждая вещь совпадает между клиентом и сервером, но я не могу получить соответствие типа контента.
Ниже приведены фрагменты моих конфигураций.
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 ответ
Я работаю в чем-то похожем, что я поставил режим безопасности ="Нет" и теперь работает для меня. Можешь попробовать. Но если вам нужно использовать режим безопасности, вы, я думаю, вам следует попробовать другой тип привязки, такой как WSHttpBinding вместо basicHttpBinding
PD 5 месяцев, чтобы задержать ответ ^^