WCF с не WCF-клиентом - PullRequest
       16

WCF с не WCF-клиентом

3 голосов
/ 19 февраля 2010

При использовании моей службы WCF от клиента я получаю следующее сообщение об ошибке. Проблема в том, когда я могу легко запустить код из клиента Windows или консольного приложения. Только не из моего веб-приложения.

System.InvalidOperationException was unhandled by user code
  Message="Client found response content type of 
  'multipart/related; type="application/xop+xml";start="<http://tempuri.org/0>";boundary="uuid:28551dc8-55af-4ec9-a9dc-169075c7f50a+id=6";start-info="text/xml"', but expected 'text/xml'. 
  The request failed with the error message: --  
  --uuid:28551dc8-55af-4ec9-a9dc-169075c7f50a+id=6 Content-ID: <http://tempuri.org/0> Content-Transfer-Encoding: 8bit Content-Type: application/xop+xml;charset=utf-8;type="text/xml"  
  <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode><faultstring xml:lang="en-US">PrintOut3: Conversion failed</faultstring><detail><ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><HelpLink i:nil="true"/><InnerException i:nil="true"/>

Это моя конфигурация привязки службы WCF

<basicHttpBinding>
  <binding name="BasicHttpBinding_IMakePDFService" closeTimeout="00:01:00"
    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
    allowCookies="false" bypassProxyOnLocal="false"
    hostNameComparisonMode="StrongWildcard"
    maxBufferSize="65536" maxBufferPoolSize="524288" 
    maxReceivedMessageSize="65536" messageEncoding="Mtom" 
    textEncoding="utf-8" transferMode="Buffered"
    useDefaultWebProxy="true">
    <readerQuotas maxDepth="32" maxStringContentLength="8192" 
      maxArrayLength="16384" maxBytesPerRead="4096" 
      maxNameTableCharCount="16384" />
    <security mode="None">
      <transport clientCredentialType="None" 
        proxyCredentialType="None" realm="" />
      <message clientCredentialType="UserName" algorithmSuite="Default" />
    </security>
  </binding>
</basicHttpBinding>

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

Похоже, что служба возвращает закодированный MTOM ответ, который клиент не ожидает. Конфигурация службы не указывает на то, что MTOM используется, поэтому, возможно, он неправильно подключен к службе. Проверьте, что на самом деле возвращает сервис, используя Fiddler или WCF Logging.

1 голос
/ 19 февраля 2010

Из сообщения видно, что ваша служба WCF правильно возвращает сообщение SOAP, в то время как ваш клиент может ожидать необработанное сообщение POX (простой старый XML) обратно.

Что это за клиент? Они ожидают, что просто сделают вызов в стиле REST для URL и вернут полезную нагрузку XML ??

Если это так, вам нужно изменить службу WCF, чтобы использовать WebHttpBinding вместо basicHttpBinding (или предоставить вторую конечную точку с webHttpBinding для этого клиента).

...