2010-01-16 3 views
9

Я думал HttpContext.Current is supposed to be null в службе WCF (даже если включен aspNetCompatibilityEnabled).Не является ли HttpContext.Current значением null в службе WCF?

MSDN: HttpContext: ток всегда имеет значение null при доступе из услуги WCF. от http://msdn.microsoft.com/en-us/library/aa702682.aspx

У меня есть это в моем web.config:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"> 

Но это:

HttpContext.Current + " has file path of " + HttpContext.Current.Request.FilePath 

возвращает действительный контекст (и доказательство того, что я нахожусь в .svc файл)

"System.Web.HttpContext has file path of /rrmvc/MVCServices/OrderPipelineService.svc" 

I basicall Мне нужен способ узнать, есть ли у меня SVC или ASMX. Как мне это сделать?

ответ

13

Нет, когда включена совместимость с ASP.NET, это весь смысл - что служба WCF выполняется в контексте конвейера ASP.NET, и у вас есть полный доступ к службам ASP.NET, таким как Cache, Состояние сеанса, Аутентификация с помощью форм и т.д.

Если вам нужно сказать, если текущий запрос к службе WCF или службы ASMX вы можете:

  • Проверьте конец строки вы уже сбрасывали в вашем эксперименте
  • Проверьте HttpContext.Current.Handler

Обратите внимание, что во всех случаях у вас не будет HttpContext.Current, когда совместимость с ASP.NET не включена, и в этом случае вы можете быть уверены, что не работаете в веб-службе ASMX.

Отрывок из страницы вы связаны между собой: Хостинг служб WCF в режиме совместимости ASP.NET

В отличие от бок о бок конфигурации по умолчанию, где WCF хостинг инфраструктуры перехватывает WCF сообщения и направляет их из протокола HTTP , службы WCF, запущенные в . Режим совместимости ASP.NET участвует полностью в HTTP-запросе ASP.NET жизненный цикл. В режиме совместимости службы WCF используют протокол HTTP через реализацию IHttpHandler, , аналогичную тому, как обрабатываются запросы для ASPX страниц и веб-служб ASMX: . В результате, WCF ведет себя идентично ASMX относительно следующие функции ASP.NET:

HttpContext: услуги WCF работает в режиме совместимости ASP.NET может получить доступ к тока и связанное с ним состояние.

Смежные вопросы