Je souhaite utiliser la classe .net HttpListener pour intercepter les requêtes à mon service de données WCF autogéré (WebServiceHost) afin d'ajouter l'en-tête "WWW-Authenticate" à la réponse (pour l'authentification de l'utilisateur) . Mais il semble que le HttpListener n'intercepte pas les requêtes qui vont à mon service de données. Le HttpListner fonctionne très bien pour différents chemins. Exemple:
HttpListner Prefix: http://localhost/somePath/
Works: http://localhost/somePath/
ne fonctionne pas: http://localhost/somePath/myWCFDataService
HttpListner: intercepter les requêtes vers WCF DataService
Est-il possible d'intercepter également des demandes qui vont à un service de données WCF selfhosted (WebServiceHost) avec le HttpListner?
Voici les extraits de code pertinents ...
Hébergement WCF DataService:
WebServiceHost dataServiceHost = new WebServiceHost(typeof(MyWCFDataService));
WebHttpBinding binding = new WebHttpBinding();
dataServiceHost.AddServiceEndpoint(typeof(IRequestHandler), binding,
"http://localhost/somePath/myWCFDataService");
dataServiceHost.Open();
HTTP Listner:
HttpListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://localhost/somePath/");
httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
httpListener.Start();
while (true)
{
HttpListenerContext context = httpListener.GetContext();
string authorization = context.Request.Headers["Authorization"];
if (string.IsNullOrEmpty(authorization))
{
context.Response.StatusCode = 401;
context.Response.AddHeader("WWW-Authenticate", "Basic realm=\"myDataService\"");
context.Response.OutputStream.Close();
context.Response.Close();
}
}
Y at-il une meilleure façon de faire l'authentification HTTP de base dans WCF Services de données? Je ne pouvais pas m'authentifier via la boîte de dialogue de connexion du navigateur Web.
Un grand merci,
Jeho
Ok, cela semble fonctionner. Merci! – Jeldrik
Merci à quiconque pour le downvote au lieu de fixer l'url qui a changé ... – nitzmahone
Désolé, je pensais avoir laissé un commentaire. Merci d'avoir corrigé le lien mais merci de fournir le contexte par [faq] (http://stackoverflow.com/help/how-to-answer) au cas où il se déplacerait à nouveau. – roufamatic