Comment puis-je ajouter un en-tête d'autorisation à la demande dans WCF?
Je suis en train de travailler sur une application Windows Form et il y a un service WCF qui doit être appelé. J'ai besoin d'ajouter un en-tête (autorisation personnalisé) à la demande avant d'être envoyé au service. J'ai une coutume de l'inspecteur de classe. J'ai essayé ce qui suit, mais le service n'est pas appelé, en quelque sorte, et elle renvoie une exception.
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
MessageHeader header = MessageHeader.CreateHeader("Authorization", "", "Basic Y19udGk6Q29udGlfQjNTVA==");
OperationContext.Current.OutgoingMessageHeaders.Add(header);
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers.Add("Authorization", "Basic Y19udGk6Q29udGlfQjNTVA==");
httpRequestProperty.Headers.Add(HttpRequestHeader.UserAgent, "Continental");
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
sentMessages.Add(request.ToString());
return null;
}
J'ai aussi essayé la manière la plus simple comme celui-ci:
MessageHeader header = MessageHeader.CreateHeader("Authorization", "", "Basic Y19udGk6Q29udGlfQjNTVA==");
request.Headers.Add(header);
mais c'est la même, l'autorisation d'en-tête est ajouté, mais il n'atteint pas le service, comment puis-je savoir ce que l'en-tête est reçue par le service? J'ai utilisé du SAVON de l'INTERFACE utilisateur et le service répond bien quand je l'ai ajouter un en-tête manuellement à la demande (avant la course).
OriginalL'auteur umais | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple est de l'ajouter sur le côté client:
et le récupérer sur le côté serveur:
Je vous suggérons également de consulter ces articles:
En-Tête d'autorisation est manquant dans la requête Http en utilisant WCF
Service WCF avec wsHttpBinding de Manipuler les en-têtes de requête HTTP
OriginalL'auteur Srinivas
Si il y a un problème avec votre BeforeSend méthode, c'est comment j'ai mis en place lors de l'ajout de l'authentification de certains webservice appels.
OriginalL'auteur Markus
Je sais que c'est tard, mais j'ai couru à travers ce post donc décidé de le remplir, dans le cas où je besoin de rappeler à nouveau. Cela a fonctionné pour moi:
Créer le Message de l'Inspecteur:
Écrire le Comportement:
L'ajouter à votre point de terminaison:
OriginalL'auteur Denis
Le problème avec ta solution est qu'elle permet d'ajouter un en-tête HTTP. Ce que vous avez besoin est un en-tête SOAP, cependant. Qui pourrait être fait de cette manière...
OriginalL'auteur bertl