2015-10-01 3 views
5

Я ссылался на службу WCF в библиотеке классов и на эту библиотеку классов в веб-приложении. Когда я попытался вызвать метод из службы, я становлюсь ниже исключения.Ошибка при вызове веб-службы WCF

"Content Type multipart/related; type="application/xop+xml";start="<http://tempuri.org/0>";boundary="uuid:901bc2e6-6d57-4363-9f99-41ca4884ce16+id=1";start-info="text/xml" was not supported by service https://URL_OF_Service/. The client and service bindings may be mismatched." 

Вот мои конфигурации

<system.serviceModel> 
    <bindings> 
     <customBinding> 
     <binding name="CoreSoapBinding"> 
      <textMessageEncoding messageVersion="Soap12" /> 
      <httpTransport /> 
     </binding> 
     </customBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://URL_OF_Service/" binding="customBinding" 
      bindingConfiguration="CoreSoapBinding" contract="ContractName" 
      name="CoreSoapPort" /> 
    </client> 
    </system.serviceModel> 

И я создал объект привязки в приложении и передается в службу.

BasicHttpBinding binding = new BasicHttpBinding() 
      binding.Security.Mode = BasicHttpSecurityMode.Transport; 
      binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
      binding.Name = "CoreSoapPort"; 
      binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
      binding.BypassProxyOnLocal = false; 
      binding.UseDefaultWebProxy = true; 
      binding.MessageEncoding = WSMessageEncoding.Mtom; 
      binding.AllowCookies = false; 
      binding.TransferMode = TransferMode.Buffered; 
      binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; 
      Encoding textencoding = Encoding.UTF8; 
      binding.TextEncoding = textencoding; 
      binding.MaxReceivedMessageSize = Int32.MaxValue; 

Я попытался изменить конфигурацию на несколько в соответствии с конфигурацией сервера. Но не повезло.

+0

Сообщение об ошибке означает, что тип содержимого mtom (multipart/related) не поддерживается службой. Почему, по-вашему, вам нужно указать mtom в вашей привязке, настроенной кодом? – MattC

+0

Я думаю, что это для вас [Ошибка WCF: привязки клиентов и сервисов могут быть несовместимы] (http://stackoverflow.com/questions/2887776/wcf-error-the-client-and-service-bindings-may-be -mismatched) Надеюсь, это поможет. –

+0

http://stackoverflow.com/questions/2887776/wcf-error-the-client-and-service-bindings-may-be-mismatched Надеюсь, что это поможет –

ответ

0

Вы пытались изменить конфигурацию кодировки сообщений на MTOM? IMHO, я думаю, вы не должны использовать оба файла конфигурации и программно, чтобы настроить свою службу WCF, потому что это даст вам много головной боли. Я предлагаю придерживаться одного, это либо файл конфигурации, либо программный.

+0

В приведенном выше коде я упомянул об этом. binding.MessageEncoding = WSMessageEncoding.Mtom; – Pradeep

+0

Я не упоминал, что это должно быть в файле конфигурации. – jtabuloc

+0

У меня есть последние конфигурации, как <связывание имени = "CoreSoapBinding" messageEncoding = "MTOM"><режим безопасности = "TransportWithMessageCredential" /> <адрес конечной точки = "https: // URL_OF_Service /" привязки = "customBinding" bindingConfiguration = "CoreSoapBinding" контракт "ContractName" имя = "CoreSoapPort" /> Pradeep

0

Ошибка возникает из-за несоответствия связи. Вы привязываете сервер к BasicHttpBinding, а ваш клиент является CustomBinding.

Как ваш сервис используется BasicHttpBinding, попытайтесь настроить клиент с таким же обязательным, но, если вы хотите использовать Soap12, вам нужно будет настроить на сторону сервера, как CustomBinding, что-то вроде этого:

CustomBinding binding = new CustomBinding(); 
      SymmetricSecurityBindingElement ssbe = 
       SecurityBindingElement.CreateSspiNegotiationBindingElement(true); 
      // Add the SymmetricSecurityBindingElement to the BindingElementCollection. 
      binding.Elements.Add(ssbe); 
      binding.Elements.Add(new TextMessageEncodingBindingElement()); 
      binding.Elements.Add(new HttpTransportBindingElement()); 

Вы можете прочитать здесь: https://msdn.microsoft.com/en-us/library/ms730305%28v=vs.110%29.aspx

Надеется, что это помогает.

Смежные вопросы