我试图从ASP.Net应用程序的调用者那里获取当前的
WindowsIdentity而不进行模拟.
阅读一些文章后,我的设置是:
>在我的IIS中,我在身份验证设置中启用了Windows身份验证
>在我的web.conf中,我将身份验证模式设置为“Windows”
出于测试目的,我编写了以下日志语句
m_techLogger.Warn(string.Format("Request[logoN_USER] {0}",Request["logoN_USER"])); m_techLogger.Warn(string.Format("Request.logonUserIdentity {0}",Request.logonUserIdentity.Name)); m_techLogger.Warn(string.Format("HttpContext.Current.User.Identity {0}",HttpContext.Current.User.Identity.Name)); m_techLogger.Warn(string.Format("WindowsIdentity.GetCurrent() {0}",WindowsIdentity.GetCurrent().Name));
这些陈述返回以下内容
2015-04-23 10:47:19,628 [7] WARN - Request[logoN_USER] DOMAIN\User 2015-04-23 10:47:19,681 [7] WARN - Request.logonUserIdentity NT AUTHORITY\SYSTEM 2015-04-23 10:47:19,681 [7] WARN - HttpContext.Current.User.Identity NT AUTHORITY\SYSTEM 2015-04-23 10:47:19,681 [7] WARN - WindowsIdentity.GetCurrent() NT AUTHORITY\SYSTEM
我知道WindowsIdentity.GetCurrent().Name返回系统用户.我不明白为什么Request.logonUserIdentity和Request [logoN_USER]的输出不同.我需要来自User的WindowsIdentity对象,其名称由Request [logoN_USER]返回.
任何人都能指出我正确的方向吗?