0

Я хочу использовать класс .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

ответ

-1

Вы ложное дерево баловаться с проксированием через HttpListener. Посмотрите на this.

+0

Хорошо, это похоже на работу. Благодаря! – Jeldrik

+0

Спасибо, кто за нисходящий, вместо того, чтобы исправить URL-адрес, который изменился ... – nitzmahone

+0

Извините, я думал, что оставил комментарий. Спасибо за исправление ссылки, но, пожалуйста, предоставьте контекст в файле [faq] (http://stackoverflow.com/help/how-to-answer), если он снова будет перемещен. – roufamatic