有一个系统,用到获取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 下已经过时了,如果用古典模式,才需要这样设置。

本文详细介绍了在ASP.NET应用中遇到的身份验证问题,包括无法获取LoginUserID的情况,以及运行过程中的稳定性问题。通过移除IIS中的匿名访问选项并确保Web.config中的相关配置,解决了这些问题。同时,文章还强调了正确配置Web.config对于身份验证的重要性,以及在不同IIS版本中的注意事项。


被折叠的 条评论
为什么被折叠?



