Impossible d'appeler le service Web avec l'authentification de base à l'aide de WCF

J'ai reçu un service web écrite en Java, je ne suis pas en mesure de faire des changements. Il exige de l'utilisateur de s'authentifier avec l'authentification de base pour accéder à toutes les méthodes. La manière suggérée à interagir avec ce service .NET est à l'aide de Visual Studio 2005 avec WSE 3.0 est installé.

C'est un problème, puisque le projet est déjà à l'aide de Visual Studio 2008 (ciblage .NET 2.0). Je pourrais le faire dans VS2005, je ne veux cependant pas de lier le projet à VS2005, ou le faire par la création d'une assemblée dans VS2005 et notamment dans le VS2008 solution (qui, en gros, les liens de la projet à 2005, de toute façon pour toute modification future de l'assemblée). Je pense que l'une de ces options serait de rendre les choses compliquées pour les nouveaux développeurs en les forçant à installer WSE 3.0 et conserver le projet d'être en mesure d'utiliser 2008 et fonctionnalités .NET 3.5 dans l'avenir... c'est à dire, je crois vraiment en utilisant WCF est le chemin à parcourir.

J'ai été à la recherche en utilisant WCF pour ce faire, cependant je ne suis pas sûr de savoir comment obtenir le service WCF pour comprendre qu'il doit envoyer les en-têtes d'authentification avec chaque demande. Je reçois des erreurs 401 lorsque je tente de faire n'importe quoi avec le service web.

C'est ce que mon code ressemble à ceci:

WebHttpBinding webBinding = new WebHttpBinding();
ChannelFactory<MyService> factory = 
     new ChannelFactory<MyService>(webBinding, new EndpointAddress("http://127.0.0.1:80/Service/Service/"));
factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
factory.Credentials.UserName.UserName = "username";
factory.Credentials.UserName.Password = "password";

MyService proxy = factory.CreateChannel();
proxy.postSubmission(_postSubmission);

Cela permettra de courir et lancer l'exception suivante:

La requête HTTP est autorisée avec le schéma d'authentification client "Anonyme". L'en-tête d'authentification reçues du serveur
a 'Basic realm=royaume'.

Et cela a un intérieur d'exception de:

Le serveur distant a retourné une erreur: (401 non autorisé.

Des pensées sur ce qui pourrait être à l'origine de ce problème serait grandement apprécié.

source d'informationauteur Rex Morgan | 2009-09-01