J'exécutais mon premier test d'unité de Visual Studio 2008 avec un service WCF et j'ai reçu l'erreur suivante :
T UnitTest.ServiceUnitTest.TestMyService a lancé une exception : System.ServiceModel.Security.MessageSecurityException : La requête HTTP est non autorisée avec schéma d'authentification du client 'Anonymous'. L'en-tête d'authentification reçu du serveur était 'Negotiate,NTLM'. ---> System.Net.WebException : Le serveur distant serveur distant a renvoyé une erreur : (401) Non autorisé.
J'obtiens également l'échec de l'audit suivant dans le journal de sécurité :
Échec de la connexion : Motif : L'utilisateur n'a pas pas été autorisé demandé sur cette machine
Utilisateur Nom : (Compte d'invité Internet)
Domaine :
Type de connexion : [ ]
Processus de connexion : IIS
Paquet d'authentification :
MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Nom du poste de travail :
J'héberge le service WCF dans IIS 6.0 sur une machine Windows XP SP3. J'ai coché les cases "Accès anonyme" et "Authentification Windows intégrée" pour le répertoire virtuel du service WCF.
Voici mon fichier de configuration pour le service :
<system.serviceModel>
<services>
<bindings>
<basicHttpBinding>
<binding name="MyBinding">
<security mode="None" />
</binding>
</basicHttpBinding>
<customBinding>
<binding name="MyBinding">
<transactionFlow />
<textMessageEncoding />
<httpsTransport authenticationScheme="Ntlm"/>
</binding>
</customBinding>
<wsHttpBinding>
<binding name="MyBinding">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<service
behaviorConfiguration="Service1Behavior"
name="Service1"
>
<endpoint
address=""
binding="wsHttpBinding"
bindingConfiguration="MyBinding"
contract="IService1"
>
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>