Le type de contenu application / xml; charset = utf-8 du message de réponse ne correspond pas au type de contenu de la liaison (text / xml; charset = utf-8)
J'ai essayer de consommer un service web WCF à l'aide de application autonome. Je suis en mesure de voir ce service à l'aide d'Internet Explorer également en mesure d'afficher dans Visual studio service de références.
C'est l'erreur que je reçois
The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8).
Comment puis-je changer cela d'utiliser le bon type de contenu?
Voici mon fichier de config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="G2WebServiceSoap11Binding" />
</basicHttpBinding>
<customBinding>
<binding name="G2WebServiceSoap12Binding">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://XXX.XX.XX.XX:XX/janus/services/G2WebService.G2WebServiceHttpSoap11Endpoint/"
binding="basicHttpBinding" bindingConfiguration="G2WebServiceSoap11Binding"
contract="G2ServiceReference.G2WebServicePortType"
name="G2WebServiceHttpSoap11Endpoint" />
<endpoint address="http://XXX.XX.XX.XX:XX/janus/services/G2WebService.G2WebServiceHttpSoap12Endpoint/"
binding="customBinding" bindingConfiguration="G2WebServiceSoap12Binding"
contract="G2ServiceReference.G2WebServicePortType"
name="G2WebServiceHttpSoap12Endpoint" />
</client>
</system.serviceModel>
ici est la pile
{System.ServiceModel.ProtocolException: The content type application/xml;charset=utf-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly.
The first 1024 bytes of the response were: '<Exception>org.apache.axis2.AxisFault: The endpoint reference (EPR) for the Operation not found is /janus/services/G2WebService and the WSA Action = null
at org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:89)
at org.apache.axis2.engine.Phase.invoke(Phase.java:333)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
at org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:136)
at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:130)
at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:829)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:255)
at com.rm.janus.webservice.GroupCallServlet.doGet(GroupCallServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpSer'. ---> System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at InetgrisG2TestApp.G2ServiceReference.G2WebServicePortType.getStudentData(getStudentDataRequest request)
at InetgrisG2TestApp.G2ServiceReference.G2WebServicePortTypeClient.G2TestApp.G2ServiceReference.G2WebServicePortType.getStudentData(getStudentDataRequest request) in c:\Users\s\Documents\Visual Studio 2012\Projects\G2TestApp\InetgrisG2TestApp\Service References\G2ServiceReference\Reference.cs:line 2981
at InetgrisG2TestApp.G2ServiceReference.G2WebServicePortTypeClient.getStudentData(ServiceRequest serviceReq) in c:\Users\s\Documents\Visual Studio 2012\Projects\G2TestApp\G2TestApp\Service References\G2ServiceReference\Reference.cs:line 2987
at InetgrisG2TestApp.Program.Main(String[] args) in c:\Users\s\Documents\Visual Studio 2012\Projects\G2TestApp\G2TestApp\Program.cs:line 57}
source d'informationauteur simon1230756
Vous devez vous connecter pour publier un commentaire.
Il est possible que votre service WCF est de retour HTML. Dans ce cas, vous devrez configurer une liaison sur le côté service de renvoyer du XML à la place. Toutefois, il est peu probable: si il est le cas, laissez-moi savoir et je vais faire un edit avec plus de détails.
La raison la plus probable est que votre service est de lancer une erreur, qui est de retourner une page d'erreurs HTML. Vous pouvez prendre un coup d'oeil à ce blog si vous voulez des détails.
tl;dr:
Il y a quelques configurations possibles pour les pages d'erreur. Si vous êtes d'hébergement de services internet (IIS), vous aurez envie de supprimer le
<httpErrors>
section de la WCF serviceweb.config
fichier. Si non, veuillez fournir les détails de votre service d'hébergement de scénario et que je peux venir avec une édition de match.EDIT:
Avoir vu ton edit, vous pouvez voir le message d'erreur est retourné. Apache ne peut pas dire quel service que vous voulez l'appeler, et est en train de jeter une erreur pour cette raison. Le service fonctionne correctement une fois que vous avez la bonne extrémité - vous vous êtes fait à l'emplacement incorrect. Je ne peux malheureusement pas dire à partir de l'information disponible en ce que le droit emplacement est, mais votre action (actuellement
null
!) ou l'URL est incorrecte.Quand je suis tombé sur cette erreur, j'ai passé des heures à essayer de trouver une solution.
Mon problème est que quand je suis allé pour enregistrer le fichier que j'avais accidentellement appuyé sur la touche "G" dans le web.config. J'ai eu un traînard Caractère juste des séances de l'extérieur, de sorte que le web.config ne sais pas comment interpréter la mise en forme est incorrecte des données.
Espère que cette aide.
Juste au cas où...
Si vous utilisez SoapUI se Moquer de Service (le Serveur), de l'appeler à partir d'un C# WCF:
Et dans ce cas, vous recevez le même message d'erreur:
Modifier votre Maquette Réponse à SoapUI et ajouter un en-Tête:
Dans mon scénario, cela résout le problème.
Nous utiliser la Réécriture d'Url extension pour IIS pour rediriger toutes les requêtes HTTP vers HTTPS. Lorsque vous essayez d'appeler un service, pas à l'aide de la sécurité des transports sur http://... adresse, c'est l'erreur qui est apparu.
De sorte qu'il pourrait être utile de vérifier si vous pouvez frapper à la fois les http et https adresses du service via un navigateur et qu'il n'est pas automatiquement vers vous avec un 303 code d'état.
Dans WCF serive projet ce problème peut être dû à la Référence de System.Web.Mvc.dll 's version différente ou peut-être tout autre DLL de la version différente problème. Donc cela peut être un problème de compatibilité avec DLL de la version différente
Lorsque j'utilise
System.Web.Mvc.dll version 5.2.2.0 -> il thorows la Erreur Le type de contenu text/html; charset=utf-8 du message de la réponse
mais quand j'utilise
System.Web.Mvc.dll version 4.0.0.0 ou inférieur -> C'est fonctionne très bien dans mon projet et ne pas avoir une Erreur.
Je ne sais pas la raison de cette différence de version de la DLL de la question, mais quand j'ai changer la DLL verison qui est compatible avec votre WCF Projet qu'il fonctionne très bien.
Cette Erreur même générer lorsque vous ajoutez de référence de l'autre Projet dans votre WCF Projet et ce projet de référence est différente de la version de Système.Web.Mvc DLL ou pourrait être tout autre DLL.
Dans mon cas, c'était simplement une erreur dans le web.config.
J'ai eu:
:
Le numéro de port (:10593) était absent de l'adresse.
Cela pourrait être une erreur dans le web.fichier de configuration.
Ouvrir l'URL dans votre navigateur, par exemple:
Vérifier si vous avez une Erreur 500.
Cherchez l'erreur dans ces sections:
Erreur De Configuration
Fichier De Config
Essayez de parcourir la WCF dans IIS voir si il est vivant et fonctionne normalement,
Dans mon cas, c'est parce que le chemin d'accès physique de la WCF est mal orienté.