ASP.net:HttpContext.Current.User.Identity.Name 在 IIS 7.5 中为空,但在 IIS Express 中不是

ASP.net: HttpContext.Current.User.Identity.Name is empty in IIS 7.5 but not on IIS Express

在我的 ASP.net 网络应用程序中,在用户通过表单身份验证进行身份验证后,我试图从 HttpContext.Current.User.Identity.Name.

中读取用户名

当我 运行 在我的个人计算机上 运行 宁 IIS Express 时,它工作得很好。当我在 IIS 7.5 下的服务器上 运行 它时,此表达式的计算结果总是 string.Empty.

为什么会这样,如何缓解?

注意:这不是“”的重复项,因为该问题是关于 Visual Studio.

中内置的 Web 服务器的

注2:在我的例子中,匿名访问没有被关闭。如果这确实是问题的原因,您能解释一下原因吗?

HttpContext.Current.User.Identity.Name 使用 LDAP 确定您的 windows 用户名。

这是有效的,因为当匿名访问被关闭时,您的计算机需要 "log in" 使用您的 windows 标识才能访问该站点(非匿名)。因此,网站知道您是谁,并且可以 return 正确的数据。

如果匿名访问保持打开状态,您的计算机将使用 quickest/easiest 访问方法(匿名)并将网页 return 发送给您。然后 IIS 只知道你是匿名的,所以不能给你一个名字。