estoy usando el WCF REST stater kit para construir un XML formato a través de servicio HTTP. Como parte de esto estoy usando un RequestInterceptor para hacer la autenticación. Dentro del RequestInterceptor tengo acceso a un objeto System.ServiceModel.Channels.RequestContext desde el cual puedo obtener la URL de la solicitud, los parámetros de la cadena de consulta y otras cosas útiles. Lo que no puedo resolver es cómo obtener acceso al HttpContext de la solicitud. Tengo varias cosas almacenadas en el HttpContext a las que quiero acceder dentro del requestInterceptor, pero estoy luchando para llegar a ellas. Cuando uso el reloj rápido dentro de Visual Studio, puedo ver que está allí enterrado dentro de los miembros privados de requestContext. ¿Puede alguien mostrarme cómo acceder al HttpContext, tal vez utilizando la reflexión sobre el objeto RequestContext?acceso HttpContext dentro WCF RequestInterceptor
Respuesta
Puede acceder ASP.NET de HttpContext dentro de cualquier servicio WCF alojado en ASP.NET, siempre y cuando se enciende la compatibilidad. Esto se hace en dos pasos:
- Aplicar la AspNetCompatibilityRequirementsAttribute a su clase de servicio y establezca la propiedad RequirementsMode a Necesario
Asegúrese de que habilita la compatibilidad mediante la configuración de los siguientes:
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>
Una vez que haya hecho eso, puede acceder a la instancia actual de HttpContext en cualquier momento usando the static Current property. Por ejemplo:
foreach(HttpCookie cookie in HttpContext.Current.Request.Cookies)
{
/* ... */
}
Nota que permite la integración con el tiempo de ejecución de ASP.NET no incurrir en alguna sobrecarga adicional para cada solicitud, por lo que si no lo necesita puede ahorrar algo de rendimiento al no permitir él y sólo mediante el System.ServiceModel.Web en tiempo de ejecución en su lugar. Usted tiene acceso a casi toda la información que necesita utilizando las clases HttpRequestResponseMessageProperty y HttpResponseMessageProperty.
Para obtener más información sobre el tema, ver this section of MSDN titled WCF and ASP.NET.
- 1. HttpContext en WCF
- 2. WCF REST RequestInterceptor authentication
- 3. caché asp.net dentro de httpcontext
- 4. HttpContext null en el servicio WCF?
- 5. HttpContext vacío al llamar al servicio web WCF
- 6. WCF ServiceHost derechos de acceso
- 7. Autenticar WCF para IPC y acceso remoto
- 8. wsHttpBinding WCF y deshabilitar el acceso anónimo
- 9. SignalR y HttpContext/Session
- 10. elmah: excepciones sin HttpContext?
- 11. ELMAH - Excepción de registro sin tener HttpContext
- 12. WCF Rest Service - Obtener acceso al encabezado de respuesta HTTP
- 13. Alternativa a HttpContext al usar NInject con un servicio WCF alojado en WAS utilizando enlace MSMQ
- 14. HttpContext Y ControllerContext en MVC
- 15. Obtener System.Web.UI.Página actual de HttpContext?
- 16. Inyectando HttpContext en Ninject 2
- 17. Burlarse de HttpContext no funciona
- 18. Usando httpcontext en la prueba de unidad
- 19. Acceso a ViewModel/DataConext dentro de ContextMenu
- 20. Elemento de acceso dentro de Silverlight DataTemplate
- 21. ¿Cómo se puede obtener el HttpContext "real" dentro de una aplicación ASP.NET MVC?
- 22. ¿Se puede acceder al HttpContext dentro de un ValidationAttribute en ASP.NET MVC?
- 23. Restricción del acceso al servicio WCF solo a localhost
- 24. Sesión de acceso en servicio WCF desde WebHttpBinding
- 25. WCF: Acceso a la instancia de servicio desde el servidor
- 26. Mover capa de acceso a datos al servicio WCF
- 27. Cuerpo de solicitud de acceso en un WCF RESTful Service
- 28. WCF/WCF Data Services/Servicios WCF RIA
- 29. ¿Cómo puedo crear un nuevo HttpContext?
- 30. ASP.NET MVC: HTTPContext e Inyección de Dependencia
que ya tengo en lugar de todo lo que mencionas anteriormente. Soy capaz de acceder al HttpContext dentro de un método OperationContract normal, pero dentro de un requestInterceptor (http://weblogs.asp.net/gsusx/archive/2008/11/26/extending-restful-services-with-a-custom-request -interceptor.aspx? CommentPosted = true # commentmessage) –