2010-01-16 8 views
9

Pensé HttpContext.Current is supposed to be null en un servicio WCF (incluso si aspNetCompatibilityEnabled está habilitado).¿No se supone que HttpContext.Current es nulo en un servicio WCF?

MSDN: HttpContext: La corriente es siempre nula cuando se accede desde dentro de un servicio WCF. de http://msdn.microsoft.com/en-us/library/aa702682.aspx

tengo esto en mi web.config:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"> 

Pero esto:

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

devuelve un contexto válido (y la prueba de que estoy en un .svc archivo)

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

I basicall Necesito una forma de saber si estoy en SVC o ASMX. ¿Cómo debo hacer eso?

Respuesta

13

No, cuando la compatibilidad con ASP.NET está habilitada, ese es el punto: que el servicio WCF se ejecuta en el contexto de la canalización ASP.NET y tiene acceso completo a los servicios ASP.NET como Cache, Estado de la sesión, la autenticación de formularios, etc.

Si necesita saber si la petición actual es un servicio WCF o ASMX un servicio que podría:

Nota: en todos los casos, no tendrá un HttpContext.Current cuando la compatibilidad con ASP.NET no esté habilitada, en cuyo caso puede estar seguro de que no se está ejecutando en el ámbito de un servicio web ASMX.

Extracto de la página enlazada: Servicios de alojamiento en WCF compatibilidad ASP.NET Modo

A diferencia de la configuración por defecto de lado a lado , donde el alojamiento WCF infraestructura mensajes intercepta WCF y las encamina de la canalización HTTP , los servicios WCF que se ejecutan en Modo de compatibilidad ASP.NET participan completamente en la solicitud HTTP de ASP.NET ciclo de vida. En modo compatibilidad, los servicios WCF utilizan la canalización HTTP a través de una implementación IHttpHandler, similar a la forma en que se manejan las solicitudes de las páginas ASPX y los servicios web ASMX . Como resultado, WCF se comporta de forma idéntica a ASMX con respecto al las siguientes características de ASP.NET:

HttpContext: servicios WCF se ejecuta en modo de compatibilidad ASP.NET puede acceder actual y su estado asociado.

Cuestiones relacionadas