Service Web XML de la réponse reçue “text/plain”. (Encore un autre type de contenu d'erreur.)

Je cherche à développer une application web qui soumet une simple demande de connexion à un service web en utilisant WCF, mais je reçois "type de contenu text/plain du message de la réponse ne correspond pas à" des erreurs, même si le service web semble être de retour XML valide.

J'ai passé en revue les dizaines de semblables S. O. posts concernant cette erreur et ont écarté le plus commun possibilités:

  1. Je peux voir la réponse que ce n'est pas une page d'Erreur de revenir (comme discuté ici).
  2. Je ne semble pas avoir une liaison problème d'incompatibilité (comme discuté ici). Mon application et
    le service web sont à la fois à l'aide de SOAP 1.1 et j'ai "basicHttpBinding" spécifié.
  3. La réponse inclus dans mon message d'erreur s'affiche pour montrer XML valide
    que comprend l'utilisateur et les variables de réponse que je veux.
  4. Je peux voir dans le Web journal du Service de fichiers que la méthode de login est
    exécuter pleinement sans lancer une exception.
  5. J'ai collé de la réponse XML dans le W3Schools validateur sans
    erreur.

Quoi d'autre pourrait être à l'origine de mon erreur, et pourquoi n'est-ce pas reconnu comme valide XML?

Je suis à l'aide .Net 4.0 et Visual Studio 2010 pour mon application, qui est en communication avec un Java/Tomcat service web sur un serveur distinct.

Voici les extraits pertinents de mon code de connexion:

AuthenticationServiceClient client = new AuthenticationServiceClient(strPortName, strURL);
client.Open();
UserCredentials credentials = new UserCredentials();
credentials.userName = TestUsername;
credentials.password = TestPassword;
LoginResponse response = client.login(credentials); //Using WCF.

Voici ce que la liaison ressemble dans mon Web.Config:

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="AuthenticationServiceSoapBinding" />
    </basicHttpBinding>
  </bindings>
  <client>
    <endpoint address="http://mywebserviceurl"
      binding="basicHttpBinding" bindingConfiguration="AuthenticationServiceSoapBinding"
      contract="MyNamespace.AuthenticationService" name="AuthenticationServiceImplPort" />
  </client>
</system.serviceModel>

Voici mon Message d'Erreur:

Erreur de test de connexion au service web "WebServiceURL": Système.ServiceModel.ProtocolException: Le type de contenu text/plain du message de la réponse ne correspond pas au type de contenu de la liaison (text/xml; charset=utf-8). Si à l'aide d'un codeur personnalisé, assurez-vous que le IsContentTypeSupported méthode est mise en œuvre correctement. La première 788 octets de la réponse:"

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<loginReponse xmlns="urn:xxxx">
<authKey>xxxx</authKey>
<authMetadata>
<IPaddress>https://MyWebApplicationURL</IPaddress>
<loginTimestamp>xxxx</loginTimestamp><levelOfAssurance>
<AuthMechanism>xxxx</AuthMechanism>
<VettingAssertion>xxxx</VettingAssertion>
</levelOfAssurance>
</authMetadata>
<errorText></errorText>
<successfulLoginFlag>true</successfulLoginFlag>
<userSummary>
<GUID>xxxx</GUID>
<commonName>xxxx</commonName>
<loginName>xxxx</loginName>
</userSummary>
<passwordExpiryDays>xxxx</passwordExpiryDays></loginReponse>
</soap:Body>
</soap:Envelope>

'.

Serveur de trace de pile: à
Système.ServiceModel.Les canaux.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest
demande, HttpWebResponse réponse, HttpChannelFactory usine,
WebException responseException, ChannelBinding channelBinding) à
Système.ServiceModel.Les canaux.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan
délai d'attente)
Système.ServiceModel.Les canaux.RequestChannel.Demande(Message,
Plage de temps (timeout) à
Système.ServiceModel.Les canaux.ServiceChannel.Appelez le(la Chaîne de l'action,
Boolean oneway, ProxyOperationRuntime opération, Object[] ins,
Object[] sorties, la plage de Temps (timeout) à
Système.ServiceModel.Les canaux.ServiceChannelProxy.InvokeService(IMethodCallMessage
appel de méthode, ProxyOperationRuntime opération) à
Système.ServiceModel.Les canaux.ServiceChannelProxy.Invoke(IMessage
message)

Exception renvoyé à [0]:
Système.Moment de l'exécution.L'accès distant.Les procurations.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg) à
Système.Moment de l'exécution.L'accès distant.Les procurations.RealProxy.PrivateInvoke(MessageData&
msgData, type Int32) à
MyNamespace.AuthenticationService.AuthenticationService.login(loginRequest
demande)
MyNamespace.AuthenticationService.AuthenticationServiceClient.MyNamespace.AuthenticationService.AuthenticationService.login(loginRequest
demande) C:...\AuthenticationService\Reference.cs:line 1716 à
MyNamespace.AuthenticationService.AuthenticationServiceClient.login(UserCredentials
les informations d'identification) C:...\AuthenticationService\Reference.cs:line 1722
au MyNamespace.Les formulaires.TestWebService.TestLogin_Click(Object sender,
EventArgs e) dans C:...\TestWebService.aspx.cs:line 284

Voici ce que ma réponse du Service Web ressemble dans WireShark:

Service Web XML de la réponse reçue “text/plain”. (Encore un autre type de contenu d'erreur.)

Si vous utilisez un sniffer (f.ex. Fiddler) et que vous créez une requête au serveur que voulez-vous revenir? Simplement en regardant votre problème, il semble que vous demandez un bon 1.1 message SOAP mais vous obtenez une "text/plain" message retourné, ce qui n'est pas ce que votre demande est en attend et y lève l'exception. J'ai peut-être de souligner l'évidente ici, mais plus d'informations que vous obtenez pourrait être très vital ici.
Ce que je suis de retour semble être le XML affiche après la "première 788 octets de la réponse étaient" dans mon exception qui est levée. Je n'ai pas de pare-feu local l'accès au Service Web, uniquement à partir de mon test du serveur de déploiement. Je vais probablement tester avec WireShark prochaine, mais je pense que ce sera juste vérifier que ma réponse XML correspond à la réponse XML inclus dans le texte de l'exception.
N'hésitez pas à suggérer le "évident". Je pourrait très bien être absent quelque chose d'évident. Je vous remercie.
Vous obtenez le même exception levée si vous modifiez le basicHttpBinding à un webHttpBinding?
Et le service est écrit en Java/Tomcat? Si oui, pourrait être le problème? Est-il un autre consommateur de du serveur web qui n'obtient pas la réponse "text/plain"?

OriginalL'auteur Mac | 2014-01-23