2011-07-19 21 views
15

¿Cómo puedo acceder al HttpContext.Current.User.Username desde una aplicación web en un servicio WCF?Cómo acceder a HttpContext.Current.User.Username en el servicio WCF

+1

Usted no se puede - WCF ** no ** necesariamente usa HTTP, y podría no estar alojado en IIS, tampoco ... así que simplemente ** podría no haber ** ningún Contexto HTTP en absoluto ... Lo que puedes hacer es usar 'OperationContext' en su método de servicio WCF –

+0

¿Puede informarme sobre cómo implementar OperationContext en mi método de servicio wcf para obtener la identidad de los usuarios? – user757207

Respuesta

29

Generalmente no lo hace: HttpContext es un concepto de ASP.NET y no se aplica a WCF a menos que lo ejecute con la compatibilidad de ASP.NET activada.

Si desea el usuario actual en WCF, utilice ServiceSecurityContext.Current.PrimaryIdentity u obtenga el contexto de seguridad a través del OperationContext.

+1

+1 gran respuesta - mancha en ... –

+1

Finalmente, alguien en stacky que no solo responde la pregunta, sino que da lo que quería el asker. – SteveCav

0

En realidad, con el modo de compatibilidad Asp.Net activado, puede acceder a HttpContext.Current.User desde un servicio WCF alojado en el sitio. Ver el sitio de Microsoft para obtener más información: https://msdn.microsoft.com/en-us/library/aa702682(v=vs.110).aspx

Si el servicio está alojado en un sitio Asp.net sólo tiene que actualizar su web.config para establecer aspNetCompatibilityEnabled = "true" en el elemento serviceHostingEnvironment:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 
Cuestiones relacionadas