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

C# ASP.net:HttpContext.Current.User.Identity.Name在IIS 7.5中为空,但在IIS Express中不为空,c#,asp.net,iis,asp.net-membership,iis-express,C#,Asp.net,Iis,Asp.net Membership,Iis Express,在我的ASP.net web应用程序中,在用户通过表单身份验证进行身份验证后,我尝试从HttpContext.Current.user.Identity.name读取用户名 当我在运行IIS Express的个人计算机上运行此功能时,效果很好。当我在IIS 7.5下的服务器上运行它时,这个表达式的计算结果总是string.Empty 这是为什么?如何缓解 注意:这不是“”的副本,因为该问题与Visual Studio中内置的web服务器有关 注2:在我的情况下,匿名访问尚未关闭。如果这确实是问题

在我的ASP.net web应用程序中,在用户通过表单身份验证进行身份验证后,我尝试从
HttpContext.Current.user.Identity.name
读取用户名

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

这是为什么?如何缓解

注意:这不是“”的副本,因为该问题与Visual Studio中内置的web服务器有关


注2:在我的情况下,匿名访问尚未关闭。如果这确实是问题的原因,您能解释一下原因吗?

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

这是因为当关闭匿名访问时,您的计算机需要使用windows标识“登录”才能访问该站点(而不是匿名)。因此,网站知道你是谁,并且可以返回正确的数据


如果保持匿名访问,您的计算机将使用最快/最简单的访问方法(匿名),并将网页返回给您。IIS只知道你是匿名的,所以不能给你起名字。

谢谢!知道为什么在IIS Express中它能工作吗?我假设它已经有凭据了,因为它正在本地运行。获取登录用户信息的正确方法是通过
Page.user
Controller.user
。此外,IIS和IIS Express是不同的,