Я использую WCF REST stater kit для создания простой службы xml через HTTP. Как часть этого Im, используя RequestInterceptor для аутентификации. Внутри RequestInterceptor у меня есть доступ к объекту System.ServiceModel.Channels.RequestContext, из которого я могу получить URL-адрес запроса, параметры запроса и другие полезные вещи. Я не могу решить, как получить доступ к HttpContext запроса. У меня есть несколько вещей, хранящихся в HttpContext, которые я хочу получить внутри requestInterceptor, но Im изо всех сил пытается добраться до них. Когда я использую quickwatch внутри Visual Studio, я вижу, что он там похоронен внутри частных членов requestContext. Может ли кто-нибудь показать мне, как получить доступ к HttpContext, возможно, используя отражение объекта RequestContext?Доступ к HttpContext внутри WCF RequestInterceptor
ответ
Вы можете обращаться к HttpContext ASP.NET внутри любой службы WCF, размещенной в ASP.NET, до тех пор, пока вы включаете совместимость. Это делается в два этапа:
- Примените AspNetCompatibilityRequirementsAttribute к классу обслуживания и установить свойство RequirementsMode на Требуется
Убедитесь, что вы включить совместимость настроив следующее:
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>
Как только вы это сделаете, вы можете в любой момент получить доступ к текущему экземпляру HttpContext с помощью the static Current property. Например:
foreach(HttpCookie cookie in HttpContext.Current.Request.Cookies)
{
/* ... */
}
Обратите внимание, что при включении интеграции со средой выполнения ASP.NET делает на себя дополнительную нагрузку для каждого запроса, так что если вам не нужна вы можете сэкономить производительность, не позволяя ему и только с помощью System.ServiceModel.Web. У вас есть доступ ко всей необходимой информации, используя классы HttpRequestResponseMessageProperty и HttpResponseMessageProperty.
Для получения дополнительной информации по этому вопросу см. this section of MSDN titled WCF and ASP.NET.
- 1. Доступ к HttpContext внутри WCF RequestInterceptor ProcessRequest метод
- 2. WCF REST RequestInterceptor authentication
- 3. RequestInterceptor в WCF 4.0 Приложение службы REST
- 4. Служба WCF с HttpContext
- 5. ProcessRequest из RequestInterceptor никогда не заканчивается [WCF]
- 6. Доступ к текущему HttpContext из HttpActionContext
- 7. Доступ к текущему HttpContext из рабочего процесса?
- 8. Параллельный доступ к HttpContext извне библиотеки
- 9. Доступ к текущему HttpContext из ILogger
- 10. Доступ к HttpContext при обработке шаблона T4
- 11. Доступ к текущему HttpContext в ASP.NET Core
- 12. Доступ к службе wcf
- 13. Пустой HttpContext при вызове веб-службы WCF
- 14. Доступ к WCF в ViewModel
- 15. Доступ к httpcontext в потоке разделяемых функций безопасен?
- 16. Доступ к HttpApplicationState, где нет тока HttpContext доступны
- 17. retrofit2: добавление RequestInterceptor
- 18. Является ли HTTPContext устаревшим в WCF?
- 19. Безопасный доступ к каналу WCF
- 20. WCF Доступ к пути отклонен
- 21. доступ к веб-службе WCF
- 22. Доступ к WCF OperationContext асинхронно
- 23. Модификация изменений RequestInterceptor
- 24. Доступ к HttpContext и идентификатору пользователя из уровня данных
- 25. Возможно ли получить доступ к ключу/значению TempData из HttpContext?
- 26. Доступ к HttpContext страницы Silverlight в службе asmx
- 27. Доступ к текущему сеансу HttpContext из Ajax Call mvc C#
- 28. Должен ли сервисный уровень иметь доступ к HttpContext?
- 29. ASP.NET MVC: Хорошо ли получить доступ к HttpContext в контроллере?
- 30. Как получить доступ к HttpContext из абстрактного базового контроллера?
У меня уже есть все, что вы упомянули выше. Я могу получить доступ к HttpContext внутри обычного метода OperationContract, но внутри requestInterceptor (http://weblogs.asp.net/gsusx/archive/2008/11/26/extending-restful-services-with-a-custom-request -interceptor.aspx? CommentPosted = истина # commentmessage) –