2010-02-19 3 views
3

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

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> 

ответ

1

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

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

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

+1

Пожелания Есть способ отметить это как ответ, я изменил свой web.config на weHttpBinding, и он сработал, однако мне также пришлось использовать эти настройки, найденные на этих страницах используйте второй лучший ответ здесь и

1

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

+0

Конфигурация выше была сгенерирована при добавлении прокси с помощью инструмента svcutil. – Kobojunkie

+0

сначала проверьте с помощью скрипача, что это то, что возвращает сервер. Если он возвращает MTOM, опубликуйте здесь полный web.config. –

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