Доступ HttpContext в WCF RequestInterceptor

Вы говорите, что "Служба Windows запускается с помощью учетных данных "администратора"",

Вы имеете в виду фактическую учетную запись 'Администратора' или пользователя в группе 'Администраторов'? При запуске сервиса, поскольку Администратор решил это для меня.

6
задан Dav Evans 27 October 2009 в 11:45
поделиться

1 ответ

Вы можете получить доступ к HttpContext ASP.NET внутри любой службы WCF, размещенной в ASP.NET, если вы включите совместимость. Это выполняется в два этапа:

  1. Примените атрибут AspNetCompatibilityRequirementsAttribute к своему классу обслуживания и установите для свойства RequirementsMode значение Required
  2. Убедитесь, что вы включили совместимость, настроив следующее:

     
     
    
    

Сделав это, вы можете получить доступ к текущему экземпляру HttpContext в любое время, используя статическое свойство Current . Например:

foreach(HttpCookie cookie in HttpContext.Current.Request.Cookies)
{
    /* ... */
}

Обратите внимание, что включение интеграции со средой выполнения ASP.NET влечет за собой дополнительные накладные расходы для каждого запроса, поэтому, если он вам не нужен, вы можете сэкономить некоторую производительность, не включив его и просто используя System.ServiceModel. Вместо этого веб-среда выполнения. У вас есть доступ практически ко всей необходимой информации с помощью классов HttpRequestResponseMessageProperty и HttpResponseMessageProperty .

Для получения дополнительных сведений см. этот раздел MSDN под названием WCF и ASP.NET .

9
ответ дан 10 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: