2015-10-01 9 views
5

Mam odwołanie do usługi WCF w bibliotece klas i tej biblioteki klasy w aplikacji sieci web. Kiedy próbowałem wywołać metodę z usługi, dostaję się poniżej wyjątku.Błąd podczas wywoływania usługi WWW 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." 

Oto moje konfiguracje

<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> 

I stworzył obiekt wiążącą we wniosku i przekazana do eksploatacji.

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; 

Próbowałem zmienić konfigurację na wiele, aby dopasować konfigurację serwera. Ale bez powodzenia.

+0

Komunikat o błędzie mówi, że typ zawartości mtom (multipart/related) nie jest obsługiwany przez usługę. Dlaczego myślisz, że musisz podać mtom w powiązaniu skonfigurowanym przez kod? – MattC

+0

Myślę, że to dla Ciebie [Błąd WCF: klient i powiązania usług mogą być niedopasowane] (http://stackoverflow.com/questions/2887776/wcf-error-the-client-and-service-bindings-may-be -mismatched) Mam nadzieję, że to pomaga. –

+0

http://stackoverflow.com/questions/2887776/wcf-error-the-client-and-service-bindings-may-be-mamedatched Mam nadzieję, że pomoże –

Odpowiedz

0

Czy próbowałeś zmienić konfigurację kodowania wiadomości na MTOM? IMHO, myślę, że nie powinieneś używać obu plików konfiguracyjnych i programowo, aby skonfigurować twoją usługę WCF, ponieważ to da ci dużo bólu głowy. Proponuję trzymać się jednego, jest to plik konfiguracyjny lub programowo.

+0

W powyższym kodzie wspomniałem o tym. binding.MessageEncoding = WSMessageEncoding.Mtom; – Pradeep

+0

Nie wspominałem, że powinno być w pliku konfiguracyjnym. – jtabuloc

+0

mam najnowsze konfiguracje Pradeep

0

Błąd występuje z powodu niezgodności powiązania. Wiązanie z serwerem to BasicHttpBinding, a klientem jest CustomBinding.

jako usługi korzysta BasicHttpBinding, spróbuj skonfigurować klienta z samo wiążące, ale jeśli chcesz używać Soap12, trzeba skonfigurować po stronie serwera jak CustomBinding, coś takiego:

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()); 

można przeczytać więcej tutaj: https://msdn.microsoft.com/en-us/library/ms730305%28v=vs.110%29.aspx

Nadzieję, że to pomaga.