另一位开发人员和我都在开发同一个 ASP.NET Web 应用程序。该应用程序使用 Forms 身份验证,但 IIS 虚拟目录配置了“匿名访问”和“集成 Windows 身份验证”。这反映了根据需要进行身份验证的生产站点。
我们两种设置之间潜在的关键区别是他使用的是 Windows 7 和 IIS 7,而我使用的是 Windows XP 和 IIS 5(因为我的罪过)。
最初,当我们都运行应用程序时,变量...
HttpContext.Current.User.Identity.IsAuthenticated……是假的。这是我所期望的,因为我们配置了表单身份验证。然后应用程序重定向到 WindowsAuth.aspx 页面。该页面检查 Request.ServerVariables["LOGON_USER"] 服务器变量,如果它不为 null 或为空,则使用它自动登录。
问题是,在我的 PC 上 Request.ServerVariables["LOGON_USER"] 始终为空。对我来说这是正确的,因为我们启用了匿名访问。但是在我同事的 PC 上,在生产环境中,变量保存了用户的用户名。我不明白为什么会这样。IIS 5 和 7 在这方面有区别吗?否则,你能解释一下吗?显然,我希望我的设置能够反映其他环境,但此时升级到 Windows 7 是最后的手段。