2009-07-27 6 views
2

J'utilise un service Web dans mon application qui nécessite la définition d'un cookie spécifique pour accéder à ses méthodes.Ajout d'un cookie au client du port de service Web

J'utilisais une classe wrapper générée pour ce service qui avait été créée en utilisant l'outil wsdl.exe. Tout fonctionne bien en utilisant cette méthode.

// this is the instance of object generated with wsdl.exe 
WSWrapper service = new WSWrapper(); 

// set cookie 
service.CookieContainer = new CookieContainer();  
Cookie cookie = new Cookie(name, value, path, domain); 
service.CookieContainer.Add(cookie); 

// run method requiring cookie to be set 
service.Test(); 

Maintenant, je voulais faire quelque chose de similaire en utilisant le service de référence au lieu de classe prégénérée. J'ai ajouté la référence Web, mais il semble qu'il n'y ait aucun CookieContainer (ou quelque chose de similaire) dans le client de port de référence de service qui a été généré.

Est-ce que quelqu'un sait comment ajouter un cookie à ce client?

Répondre

0

J'ai résolu le problème. Au lieu de créer une référence de service, j'ai ajouté Web Reference et le client généré possédait toutes les propriétés de la classe pré-générée wsdl.exe.

4

Toutefois, les proxies svcutil.exe générés présentent des avantages. Le fait que le client enregistre et renvoie les cookies renvoyés par le serveur (comme cela se faisait en ajoutant simplement un CookieContainer) peut désormais être contrôlé via app.config. Ajouter allowCookies="true "à la basicHttpBinding ou basicHttpsBinding comme un attribut à la liaison.

Vous pouvez également utiliser l'éditeur de configuration de WCF pour faire la même chose.

Questions connexes