2011-05-10 8 views
5

he el siguiente escenario:Nlog: Registrar el usuario que llama la aplicación en una aplicación WCF en IIS

  • Un servicio WCF desplegado se ejecuta como servicio alojado ventanas. Este servicio WCF se usa para registrar eventos específicos en una base de datos (NLog v2). Este servicio usa basicHttpBinding.

  • Una aplicación web implementada (servidor diferente) en IIS. El grupo de aplicaciones se ejecuta con credenciales de SERVICIO DE RED. La autenticación de la aplicación web está integrada en Windows (credenciales de Active Directory).

Cada vez que llamo el WCF desde una aplicación de consola que puedo conseguir la identidad del usuario a partir System.Threading.Thread.CurrentPrincipal.Identity.Name; cuando lo llamo desde la aplicación web, espero obtener "DOMAIN\SERVER$" como el nombre de identidad del subproceso (que se produce como se esperaba).

Mi problema es: me gustaría obtener el usuario que llamó a la aplicación web. Ya he intentado establecer el atributo AspNetCompatibilityRequirements en el contrato de servicio WCF, pero los parámetros ${asp-application}, ${aspnet-user-identity} y ${asp-request} en NLog se leen como null. El HttpContext en la aplicación web está bien, pero no se envía al WCF. Hay una propiedad Credentials en la clase NLog.Logger, pero es de solo lectura.

¿Alguien sabe cómo resolverlo?

Respuesta

Cuestiones relacionadas