Доступ к WCH MessageHeader, когда OperationContext.Current равен нулю - PullRequest
7 голосов
/ 23 августа 2010

У меня есть WCF, который защищен с помощью пользовательского UserNamePasswordValidator. Мне нужно получить доступ к тому, что обычно будет доступно в:

OperationContext.Current.RequestContext.RequestMessage.Headers.To

чтобы я мог разобрать URL. Однако OperationContext.Current имеет значение null. Есть ли способ получить заголовок сообщения без OperationContext?

1 Ответ

9 голосов
/ 23 августа 2010

Да, это возможно через инспекторов сообщений.

OperationContext недоступен во время метода UserNamePasswordValidator.Validate , поскольку он будет создан позже в конвейере, когда вызов будет отправлен в соответствующий метод службы.

Обычно вы перехватываете входящие и исходящие сообщения в начале конвейера WCF, используя Инспекторы сообщений . Однако это не будет работать в вашем случае , поскольку инспекторы сообщений вызываются только после успешной аутентификации запроса .

Если вам необходимо проверить входящий HTTP-запрос перед аутентификацией , вы можете разместить службу WCF в IIS, работающем в режиме совместимости ASP.NET . Таким образом, вы сможете получить доступ к URL-адресу запроса через класс HttpContext :

public override void Validate(string userName, string password)
{
    string url = HttpContext.Current.Request.Url.AbsoluteUri;
}

Связанные ресурсы:

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