0

我有一个 ASP.NET 应用程序,它使用 nHibernate 的 IPreUpdateListener 记录审计报告。为了在监听器事件中设置当前用户,我使用了 System.Security.Principal.WindowsIdentity.GetCurrent()。这在我的机器上调试时效果很好,但是当我将它移动到登台服务器时,我得到的是 ASP.NET 进程凭据,而不是请求用户。

在 ASP.NET 页面中,我可以使用 Request.LogonUserIdentity(因为我使用的是集成身份验证,所以效果很好),但是如何直接引用该用户而无需将其直接传递给我的事件?我不想通过管道传递这些信息,因为它确实不属于中间事件/调用。

4

1 回答 1

1

如果代码在 ASP.NET 上下文中执行,HttpContext.Current(静态)包含当前的 Http 上下文。您始终可以测试它是否为空。如果它不为空,您将能够获得HttpContext.Current.Request.

但是,驻留在此请求上下文中的身份最终取决于网站(IIS、Cassini、IIS express 或自定义)如何处理身份。

于 2011-02-14T15:21:44.127 回答