我有一个ASP.NET应用程序,使用nHibernate的IPreUpdateListener记录审计报告。为了在Listener事件中设置当前用户,我使用的是System.Security.Principal.WindowsIdentity.GetCurrent()。这在我的机器上调试时工作正常,但是当我将它移动到登台服务器时,我得到的是ASP.NET进程凭据,而不是请求用户。
在ASP.NET页面中,我可以使用Request.LogonUserIdentity(由于我使用集成身份验证,它工作正常),但是如何直接引用此用户而不必直接将其传递给我的事件?我不想通过管道传递此信息,因为它实际上不属于中间事件/调用。
答案 0 :(得分:1)
如果代码在ASP.NET上下文中执行,HttpContext.Current
(静态)包含当前的Http上下文。您始终可以测试它是否为空。如果它不为空,您将能够获得HttpContext.Current.Request
。
但是,此请求上下文中的标识最终取决于网站(IIS,Cassini,IIS表达或自定义)如何处理标识。