Заголовки в OperationContext - PullRequest
       3

Заголовки в OperationContext

5 голосов
/ 25 февраля 2011

Я бы сделал небольшой проект (WCF + REST), и у меня небольшая проблема.Я хочу сделать мой класс авторизации и аутентификации.

Мой класс авторизации:

//validate api key
public class BasicAuthorization : ServiceAuthorizationManager
{
    public override bool CheckAccess(OperationContext operationContext, 
        ref Message message)
    {
        //some code
    }
}

Мой класс аутентификации

// validation user login & password
public class BasicAuthentication : ServiceAuthenticationManager
{
    public override ReadOnlyCollection<IAuthorizationPolicy> Authenticate(
        ReadOnlyCollection<IAuthorizationPolicy> authPolicy, Uri listenUri, 
        ref Message message)
    {
        //some code
    }
}

У меня слишком большой файл конфигурации

<behavior>
  <serviceAuthorization 
      serviceAuthorizationManagerType="WCF.BasicAuthorization, WCF"/>
  <serviceAuthenticationManager 
      serviceAuthenticationManagerType="WCF.BasicAuthentication, WCF"/>
</behavior>

Код в классеневажно - не проблема.

Моя проблема заключается в том, как получить заголовки из OperationContext или класса сообщения.Как я уже говорил, я делаю это в состоянии покоя, поэтому я хочу вручную установить заголовок Authorizaion / заголовок www-authenticate, но приложение его не видит.

Я включаю Fiddler2 и пытаюсь поместить любой заголовок дляпример:

Content-Type: application/xml
Authorization: Basic bla23rwerfsd3==
User-Agent: Fiddler
Host: localhost:59305

И message.Headers / operationContext.Headers не имеет ни моего заголовка (имеет только другой), ни авторизации, ни Content-Type

1 Ответ

14 голосов
/ 25 февраля 2011

Вы можете получить доступ к заголовкам во время вашей веб-операции с помощью класса System.ServiceModel.Web.WebOperationContext, который имеет статическое свойство «Current», которое представляет текущий контекст.Он предоставляет свойство «IncomingRequest», которое содержит свойство «Header» типа «WebHeaderCollection».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...