2010-01-12 5 views
0

J'ai un harnais de test client WCF où j'utilise un comportement de point de terminaison "client message inspector" pour "retirer" les demandes brutes et les messages de réponse allant et revenant d'un service et les enregistrer pour affichage ultérieur dans l'interface utilisateur.Comment puis-je obtenir le corps message/réponse dans WCF lorsque le serveur renvoie un HTTP 401?

Cela fonctionne très bien, sauf dans le cas d'utilisation où les informations d'identification non valides sont transmises (authentification de base). Le serveur renvoie un HTTP 401 avec une erreur SOAP dans le corps contenant les détails de ce qui s'est passé. Je n'ai aucun contrôle sur le service, donc ce comportement ne peut pas être changé.

Parce que le HTTP 401 est renvoyé en tant que WebException, mon inspecteur de message ne se déclenche jamais et je ne parviens pas à la réponse brute. Cette exception parvient finalement à l'interface utilisateur sous la forme MessageSecurityException.

Y a-t-il un moyen de supprimer cela afin que le message AfterReceiveReply de l'inspecteur de messages se déclenche toujours? ou y a-t-il un autre endroit où je peux accéder à toute la réponse brute?

Merci!

Répondre

2
catch (WebException e) 
{ 
    resp = (HttpWebResponse)e.Response; 
} 
+0

Merci Darin. Quelques détails supplémentaires pour tous ceux qui pourraient s'en soucier: Bien que je n'ai pas vu où je pourrais attraper le 'WebException' directement, il apparaît comme l'exception de base pour un' MessageSecurityException' dans ma couche d'interface utilisateur. J'ai ensuite pu obtenir le corps de la réponse en utilisant la méthode 'GetResponseStream()' de l'objet HttpWebResponse obtenu à partir de 'WebException' – WayneC

Questions connexes