2

Je tente de créer un service WCF avec authentification anonyme. Lorsque je déploie le service sur le serveur de destination qui ne figure pas sur mon domaine actuel, l'erreur suivante s'affiche lors de la tentative d'appel:Liaison de service WCF wsHttp vs base sans authentification

Type de contenu application/soap + xml; Charset = utf-8 n'était pas pris en charge par le service http://myserver.com/page.svc. Les liaisons client et service peuvent être incompatibles.

tel qu'il est maintenant, j'ai la section suivante dans mon fichier web.config pour le service:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
    </modules> 
    </system.webServer> 

J'ai essayé différentes liaisons (WSHttpBinding et BasicHttpBinding) mais je reçois soit l'erreur ci-dessus (using basicHttpBinding) ou un message "Accès refusé" (en utilisant wsHttpBinding). Voici la section web.config j'ai essayé d'utiliser lors de l'utilisation wsHttpBinding

<system.serviceModel> 
    <services> 
    <service behaviorConfiguration="AMP.MainBehavior" name="AMP.Main"> 
    <endpoint address="" binding="wsHttpBinding" contract="AMP.IMain"> 
     <identity> 
     <dns value="myservice.com"/> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
    </services> 
    <behaviors> 
    <serviceBehaviors> 
    <behavior name="AMP.MainBehavior"> 
    <serviceMetadata httpGetEnabled="true"/> 
    <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

Le service a été créé avec le .NET Framework 4.0. J'ai besoin d'être anonyme mais je ne suis pas sûr de ce qui me manque. Je suis nouveau à WCF donc je n'ai pas encore tous mes canards dans une rangée.

Merci,

+0

Quelle est la configuration de votre client? –

Répondre

4

L'erreur dit que vous envoyez demande HTTP avec le type de contenu qui ne sont pas pris en charge. Le type de contenu mentionné est utilisé dans SOAP 1.2 mais BasicHttpBinding utilise SOAP 1.1 avec un type de contenu différent (text/xml; charset = utf-8). Il existe donc probablement une discordance entre votre service et la configuration du client.

Dans votre deuxième exemple, le problème est la configuration par défaut de WsHttpBinidng. WsHttpBinding est par défaut sécurisé avec la sécurité des messages et l'authentification Windows = > car les machines se trouvent dans des domaines différents, de sorte que l'authentification Windows ne peut pas fonctionner. Vous devez définir votre propre configuration WsHttpBinding. Essayez ceci (la même configuration de liaison doit être utilisée sur le client):

<system.serviceModel> 
    <bindings> 
    <wsHttpBinding> 
     <binding name="Unsecured"> 
     <security mode="None" /> 
     </binding> 
    </wsHttpBinding> 
    </bindings> 
    <services> 
    <service ...> 
     <endpoint address="..." contract="..." 
     binding="wsHttpBinding" bindingConfiguration="Unsecured" /> 
     ... 
    </service> 
    </services> 
</system.serviceModel> 
+1

Merci pour votre réponse! J'ai ajouté dans la configuration que vous avez suggéré et défini l'adresse de point de terminaison à l'URL où le service vit et maintenant je reçois une erreur différente. Il commence comme "Le canal sécurisé ne peut pas être ouvert car la négociation de sécurité avec le point de terminaison distant a échoué." –

Questions connexes