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

时间:2015-07-01 20:16:14

标签: c# asp.net iis asp.net-membership iis-express

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

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

为什么会这样,以及如何减轻它?

注意:这不是“HttpContext.Current.User.Identity.Name is Empty”的副本,因为该问题与Visual Studio内置的Web服务器有关。

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

1 个答案:

答案 0 :(得分:2)

HttpContext.Current.User.Identity.Name使用LDAP来确定您的Windows用户名是什么。

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

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