Я хочу использовать класс .net класса HttpListener для перехвата запросов к моей службе самообслуживания (WebServiceHost) WCF Data Service, чтобы добавить заголовок «WWW-Authenticate» в ответ (для аутентификации пользователя) , Но похоже, что HttpListener не перехватывает никаких запросов, которые попадают на мой сервисный центр. HttpListner отлично работает для разных путей. Пример:
HttpListner Префикс: http://localhost/somePath/
работы: http://localhost/somePath/
не работает: http://localhost/somePath/myWCFDataService
HttpListner: перехватывает запросы в WCF DataService
Можно перехватить также запросы, которые идут к selfhosted службы WCF Data (WebServiceHost) с HttpListner?
Вот соответствующие фрагменты кода ...
хостинг в WCF DataService:
WebServiceHost dataServiceHost = new WebServiceHost(typeof(MyWCFDataService));
WebHttpBinding binding = new WebHttpBinding();
dataServiceHost.AddServiceEndpoint(typeof(IRequestHandler), binding,
"http://localhost/somePath/myWCFDataService");
dataServiceHost.Open();
HTTP-у слушателя:
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();
}
}
Есть ли лучший способ для выполнения HTTP базовой аутентификации в WCF Услуги передачи данных? Я не могу пройти аутентификацию через диалоговое окно входа в веб-браузер.
Большого спасибо,
Jeho
Хорошо, это похоже на работу. Благодаря! – Jeldrik
Спасибо, кто за нисходящий, вместо того, чтобы исправить URL-адрес, который изменился ... – nitzmahone
Извините, я думал, что оставил комментарий. Спасибо за исправление ссылки, но, пожалуйста, предоставьте контекст в файле [faq] (http://stackoverflow.com/help/how-to-answer), если он снова будет перемещен. – roufamatic