WCF charset=utf-8 du message de la réponse ne correspond pas au type de contenu de la liaison (application/soap+xml; charset=utf-8)
Je suis d'hébergement d'un service WCF dans IIS 7.5 utilisation .NET 4.0. J'ai aussi une application WPF que je suis en utilisant comme mon client qui a été construit avec Visual Studio 2010 et .NET 4.0. J'ai ajouté mon service de référence et lorsque je tente de l'appeler une fonction, j'obtiens l'exception suivante
Le type de contenu application/xml; charset=utf-8 du message de la réponse ne correspond pas au type de contenu de la liaison (application/soap+xml; charset=utf-8)
Je suis en mesure de naviguer vers le service dans un navigateur web et mes liaisons semble être le même entre le client et le service (WsHttp liaisons).
Je sais qu'il y a beaucoup de résultats de google sur cette erreur mais aucun d'eux ne semblait pertinent d'aide/mon problème spécifique. J'ai essayé d'installer la Non-Activation HTTP fonctionnalités ainsi que d'une grande variété d'autres petits trucs. N'importe qui puisse l'aider? Grâce
modifier, voici mes configs (ils sont assez longues)
Client
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ContentSoap"
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<binding name="OrderSoap"
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="Text" 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>
<netTcpBinding>
<binding name="NetTcpBindingEndpoint" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered"
transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="2147000000" maxBufferSize="65536" maxConnections="10"
maxReceivedMessageSize="2147000000">
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="2147000000" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:01:00"
enabled="true" />
<security mode="None">
<transport clientCredentialType="Windows"
protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
<wsHttpBinding>
<binding name="WSHttpBinding_IInmateCanteenServiceWeb"
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint name="ContentSoap"
address="http://media.team.twvending.net/storeservices/content.asmx"
binding="basicHttpBinding" bindingConfiguration="ContentSoap"
contract="MediaPortContent.ContentSoap" />
<endpoint name="OrderSoap"
address="http://media.team.twvending.net/storeservices/order.asmx"
binding="basicHttpBinding" bindingConfiguration="OrderSoap"
contract="MediaPortOrder.OrderSoap" />
<endpoint name="NetTcpBindingEndpoint"
address="..."
binding="netTcpBinding" bindingConfiguration="NetTcpBindingEndpoint"
contract="WebCallBack.ICallbackService" />
<endpoint name="WSHttpBinding_IInmateCanteenServiceWeb"
address="..."
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IInmateCanteenServiceWeb"
contract="InmateCanteenWeb.IInmateCanteenServiceWeb" />
<endpoint name="WSHttpBinding_ICommAccountingBinding"
address="..."
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IInmateCanteenServiceWeb"
contract="CommAccountingWeb.ICommAccountingWeb" />
</client>
</system.serviceModel>
et le Serveur
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="httpBehavior">
<!--<webHttp />-->
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceCredentials>
<clientCertificate>
<authentication revocationMode="NoCheck" />
</clientCertificate>
<serviceCertificate findValue="CN=secure.inmatecanteen.com" />
</serviceCredentials>
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="MexBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="HttpMexBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="BasicHttpMexBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"
multipleSiteBindingsEnabled="true" />
<bindings>
<wsHttpBinding>
<binding name="myWsHttpBinding" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" messageEncoding="Text">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
<webHttpBinding>
<binding name="myWebHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
<basicHttpBinding>
<binding name="myBasicHttpBinding" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="CommAccountingWeb.CommAccountingWeb"
behaviorConfiguration="HttpMexBehavior">
<endpoint
address=""
behaviorConfiguration="httpBehavior"
binding="webHttpBinding" bindingConfiguration="myWebHttpBinding"
contract="CommAccountingWeb.ICommAccountingWeb" />
<endpoint
address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="..."></add>
</baseAddresses>
</host>
</service>
<service name="CommAccountingWeb.CommAccountingBasic"
behaviorConfiguration="BasicHttpMexBehavior">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="myBasicHttpBinding"
contract="CommAccountingWeb.ICommAccountingBasic" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="..." />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
webHttpBinding
et donc de retour juste du XML, alors que votre client s'attend à un SOAP XML message.... Pouvez-vous nous montrer le serveur et côté client configs??Voir mon montage....
OK merci pour l'edit - mais vous avez donc beaucoup de points de terminaison de service et les clients de connexion - ceux utilisez-vous l'origine de ce problème?? Que fait votre code côté client ressembler, que vous essayez de l'utiliser pour appeler l'une de ces fonctions??
Celui qui est à l'origine de m'problèmes est la CommAccountingService. Les autres points de fin fonctionnent parfaitement. Sur le site du client, le point final est appelé "WSHttpBinding_ICommAccountingBinding'. Aussi loin que le code côté client, il est généré par visual studio. Tout ce que je fais est de créer un CommAccountingWebClient objet et je peux voir tous mes fonctions. Lorsque je tente de l'appeler, c'est lorsque cette exception est levée.
OriginalL'auteur tier1 | 2011-12-26
Vous devez vous connecter pour publier un commentaire.
Comme je le soupçonnais - de votre côté client config ressemble à ceci:
Il s'attend à ce wsHttpBinding - mais du côté serveur, l'adresse c'est connecter est:
et de ce point de terminaison de serveur utilise webHttpBinding.
Ainsi, alors que le client attend un SAVON message XML (type de contenu:
application/soap+xml; charset=utf-8
), du côté serveur, le point de terminaison est un RESTE point de terminaison qui renvoie plaine XML (type de contenu:application/xml; charset=utf-8
)Solution: vous devez vous assurer que le client et le point de terminaison du serveur utilisé sont en synchronisation avec ce qui concerne les liaisons de configuration et de!
OriginalL'auteur marc_s
Que l'un des commentaires dit dans cette question,
Ajouter
?wsdl
à votre client l'adresse de point de terminaison, et vous devriez avoir plus de chance avec le service.?wsdl
est important - cela signifie que le navigateur est juste en train de "Web Services Description Language" pour le service, et de ne pas appeler le service.J'ai eu le même problème et en ajoutant
?wsdl
résolu mon mal de tête.OriginalL'auteur Alex Jolig
Je suis tombé sur une semblable erreur lors de la création d'un service à la clientèle à l'un des serveur existant à côté d'un WebService. J'ai pu la corriger à l'aide de SOAP 1.1 protocole de transport sur le client. En quelque sorte de soap 1.2 est donnant/attend un format différent. Cette trace de retour à la différence entre BasicHttpBinding vs WebHttpBinding vs WsHttpBinding.
OriginalL'auteur Hitansu
J'ai eu ce problème après j'ai ajouté une méthode qui a retourné une collection d'instances d'une classe de base qui n'ont pas un
[KnownType]
attribut qui permettrait de résoudre à un exemple concret.Avec l' [KnownType] attribut en place, le problème a disparu.
OriginalL'auteur Aleksey Bykov
dans mon cas même erreur a été causée par le manque de
attributs de type de données retourné.
Message d'erreur était vraiment trompeuses.
OriginalL'auteur Michael Brennt
Assurez-vous que vous n'avez pas fait de modifications dans les liaisons, les contrats et les points de terminaison généré dans l'application.config sur plus de service de référence.
Ajouter MessageEncoding comme Mtom .NET code et de vérifier ensuite si vous continuez à recevoir le message.
J'ai essayé d'expliquer la création d'une consommation de service wcf à l'aide protocole soap pour les deux wshttpbinding et basichttpbinding et problèmes rencontrés ici :
http://www.writeulearn.com/consume-wcf-soap-service-csharp/
S'il vous plaît aller à travers elle.
OriginalL'auteur bhupesh
J'ai cette erreur en raison des Différentes version de Système.Web.MVC DLL. Vous pouvez consulter réponse Ici dans un autre débordement de pile question.
OriginalL'auteur Dilip0165