78 votes

Content Type text/xml ; charset=utf-8 n'était pas supporté par le service

J'ai un problème avec un service WCF. J'ai une application console et je dois consommer le service sans utiliser app.config, donc j'ai dû définir le point de terminaison, etc. par code. J'ai bien une référence de service au svc, mais je ne peux pas utiliser l'app.config. Voici mon code :

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress address = new EndpointAddress("http://localhost:8731/WcfServicio/MiServicio");

MiServicioClient svc = new MiServicioClient(binding, address);
object ob = svc.PaisesObtener();

A la dernière ligne quand je fais svc.PaisesObtener() Je reçois l'erreur :

Content Type text/xml; charset=utf-8 was not supported by service
http://localhost:8731/WcfServicio/MiServicio.  The client and service bindings may be mismatched.

1voto

Corey Points 21

Pour toute personne qui atterrit ici en cherchant :

Le type de contenu 'application/json ; charset=utf-8' n'était pas le type attendu 'text/xml ; charset=utf-8'.

ou un sous-ensemble de cette erreur :

Une erreur similaire a été causée dans mon cas par la construction et l'exécution d'un service sans les attributs appropriés. J'ai obtenu ce message d'erreur lorsque j'ai essayé de mettre à jour la référence du service dans mon application client. Le problème a été résolu lorsque j'ai appliqué correctement [DataContract] y [DataMember] à mes classes personnalisées.

Cela s'applique très probablement si votre service était configuré et fonctionnait, puis s'est interrompu après avoir été modifié.

0voto

Anver Sadat Points 1

J'étais également confronté au même problème récemment. Après avoir lutté pendant plusieurs heures, j'ai finalement trouvé une solution par l'ajout de

Factory="System.ServiceModel.Activation.WebServiceHostFactory"
to your SVC markup file. e.g.
ServiceHost Language="C#" Debug="true" Service="QuiznetOnline.Web.UI.WebServices.LogService" 
Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

et maintenant vous pouvez compiler et exécuter votre application avec succès.

0voto

alexkovelsky Points 41

Encore une fois, j'insiste sur le fait que l'espace de noms, le nom du svc et le contrat doivent être correctement spécifiés dans le fichier web.config :

 <service name="NAMESPACE.SvcFileName">
    <endpoint contract="NAMESPACE.IContractName" />
  </service>

Ejemplo:

<service name="MyNameSpace.FileService">
<endpoint contract="MyNameSpace.IFileService" />
</service>

(Les balises non pertinentes sont omises dans ces échantillons)

0voto

Recev Yildiz Points 361

Dans mon cas, j'ai dû spécifier codage du message a Mtom en app.config de l'application client comme ça :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="IntegrationServiceSoap" messageEncoding="Mtom"/>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:29495/IntegrationService.asmx"
                binding="basicHttpBinding" bindingConfiguration="IntegrationServiceSoap"
                contract="IntegrationService.IntegrationServiceSoap" name="IntegrationServiceSoap" />
        </client>
    </system.serviceModel>
</configuration>

Mon client et mon serveur utilisent tous deux basicHttpBinding. J'espère que cela aidera les autres :)

0voto

SouthSun Points 11

J'ai eu cette erreur et toutes les configurations mentionnées ci-dessus étaient correctes mais j'obtenais toujours " Les liens entre le client et le service peuvent ne pas correspondre. " erreur.

Ce qui a résolu mon erreur, c'est de faire correspondre le codage du message dans le noeud suivant des fichiers de configuration du service et du client. Ils étaient différents dans le mien, le service était Texte et client Mtom . Le changement de service en Mtom, pour correspondre à celui du client, a résolu le problème.

<configuration>
  <system.serviceModel>
      <bindings>
           <basicHttpBinding>
              <binding name="BasicHttpBinding_IMySevice" ... messageEncoding="Mtom">
              ...
              </binding>
           </basicHttpBinding>
      </bindings>
  </system.serviceModel>
</configuration>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X