Настройка кодировки MTOM в сервисе WCF и клиенте - PullRequest
0 голосов
/ 30 марта 2020

этот вопрос задавался много раз, но я, кажется, нигде не нашел решения, так что вот оно. Заранее извиняюсь. Я получаю эту ошибку, когда я возвращаю предметы для обслуживания клиенту. Та же самая конфигурация с TextMessageEncoder прекрасно работает для всех типов запросов, которые я делаю, но как только я изменяю кодировку на Mtom, это ошибка. Отличается ли ответ от запроса?

System.ServiceModel.ProtocolException: 'Тип содержимого multipart / related; тип = "приложения / ХОР + xml", начать = "http://tempuri.org/0"; граница = "UUID: 8ac1e2f2-8d84-4069-bf5a-db43a3d70f87 + ID = 5", старт-инфо =» application / soap + xml "ответного сообщения не соответствует типу содержимого привязки (application / soap + xml; charset = utf-8). При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 1024 байта ответа были следующими: '--uuid: 8ac1e2f2-8d84-4069-bf5a-db43a3d70f87 + id = 5 Content-ID: http://tempuri.org/0 Content-Transfer-Encoding: 8bit Content-Type : application / xop + xml; charset = utf-8; type = "application / soap + xml"

Первые 1024 байта ответа были: '--uuid: 8ac1e2f2-8d84-4069-bf5a -db43a3d70f87 + id = 6 Content-ID: http://tempuri.org/0 Content-Transfer-Encoding: 8bit Тип содержимого: application / xop + xml; charset = utf-8; type = "application / soap + xml "

Сервис web.config

 <system.serviceModel>
<services>      
  <service name="WebServices.MyService" behaviorConfiguration="Behavior">
    <endpoint address="" binding="customBinding" bindingConfiguration="Soap12WithHttps" contract="WebServices.IMyService" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="Behavior">
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <customBinding>
    <binding name="Soap12WithHttps">
      <mtomMessageEncoding messageVersion="Soap12"></mtomMessageEncoding>
      <httpsTransport></httpsTransport>
    </binding>
  </customBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

Клиентское приложение.config

  <system.serviceModel>
<bindings>
  <customBinding>            
    <binding name="CustomBinding_IMyService">
      <mtomMessageEncoding messageVersion="Soap12"></mtomMessageEncoding>
      <httpsTransport></httpsTransport>
    </binding>
  </customBinding>
</bindings>
<client>
  <endpoint address="https://somepath.com/Services/MyService.svc"
      binding="customBinding" bindingConfiguration="CustomBinding_IMyService"
      contract="myServiceClient.IMyService" name="CustomBinding_IMyService" />
</client>

...