Разве HttpContext.Current не должен быть нулевым в службе WCF? - PullRequest
9 голосов
/ 16 января 2010

Я думал HttpContext.Current должен быть нулевым в службе WCF (даже если включен aspNetCompatibilityEnabled).

MSDN: HttpContext: ток всегда равен нулю при доступе изнутри сервис 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"

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

1 Ответ

13 голосов
/ 16 января 2010

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

Если вам необходимо указать, относится ли текущий запрос к службе 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 режим совместимости может получить доступ Текущее и связанное с ним состояние.

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