有一个系统,用到获取Login User ID , 但发现第一次运行时无法获取到 User ID ,但第二个页面又可以。
HttpContext.Current.User.Identity.Name
还有一个问题,即在运行过程中不稳定,有时正常,有时又不正常,即又获取不到。
经同事们的多次测试,发现:
去除 IIS 中的匿名访问选项即可,仅保留Windows 整合认证即可解决。
Enable anonymous access
X Integrated Windows authentication.
同时还需要检查在 Web.config 中是否有以下设定,配合才能成功。
<identity impersonate="true"/>
<authentication mode="Windows"/>
<identity impersonate="true" />
这个设置是为 IIS 6 做身份模拟而设置的。在这种情况下,用户身份的认证交给IIS来进行。当允许匿名登录时,IIS将一个匿名登录使用的标识(缺省情况下是IUSR)交给ASP.NET应用程序。当不允许匿名登录时,IIS将认证过的身份标识传递给ASP.NET应用程序。ASP.NET的具体访问权限由该账号的权限决定。
这个设置在 IIS 7 下已经过时了,如果用古典模式,才需要这样设置。