在我的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:在我的情况下,匿名访问尚未关闭。如果这确实是问题的原因,请解释原因吗?
答案 0 :(得分:2)
HttpContext.Current.User.Identity.Name使用LDAP来确定您的Windows用户名是什么。
这是有效的,因为当关闭匿名访问时,您的计算机需要使用您的Windows标识“登录”才能访问该站点(非匿名)。因此,该网站知道您的身份并且可以返回正确的数据。
如果保持匿名访问,您的计算机将使用最快/最简单的访问方法(匿名)并将网页返回给您。 IIS然后只知道你是匿名的,所以不能给你起个名字。