HttpContext.Current.User.Identity.Name返回空白

时间:2012-11-14 18:08:01

标签: asp.net windows-identity

我正在使用HttpContext.Current.User.Identity.Name来获取Web应用程序正在使用时的用户名。在开发过程中,我使用了我的本地iis,启用了集成的Windows身份验证,启用了匿名访问和禁用,并且我能够获得用户名。

现在,当我发布Web应用程序时,它又回来了。已发布服务器上的设置是相同的,我尝试使用Page.User.Identity.Name,它也返回空白。

有谁知道这是为什么以及如何解决它?

8 个答案:

答案 0 :(得分:13)

您可能已启用匿名身份验证以及Windows身份验证。关闭Anonymous off。

所以,

<system.web>
    <authentication mode="Windows" />
</system.web>

在应用的IIS配置中, 查看“身份验证”标签

Set **Anonymous Authentication** to **Disabled** and
Set **Windows Authentication** to **Enabled**

这应该可行,并且Identity.UserName现在应该正确显示。

答案 1 :(得分:3)

要解决此问题,您必须启用Windows身份验证功能。请按照以下步骤操作:

单击“开始”,然后单击“控制面板”。打开“程序”组 - 在“程序和 - 功能”下,单击“打开或关闭Windows功能” - 展开标有Internet Information Services的项目 - 展开标记为万维网服务的项目。 - 扩展项目安全性 - &gt;
 确保选择 Windows身份验证

您还需要从IIS禁用匿名身份验证,如下所示: - 在IIS中单击您的应用程序 - 双击IIS组下的身份验证 - 单击匿名身份验证 - 单击“操作”下右侧的“禁用”。 希望这有帮助

答案 2 :(得分:3)

HttpContext.Current.Request.LogonUserIdentity.Name在VS 2012环境和IIS 7中始终适用于我

答案 3 :(得分:1)

在web.config文件中设置<authentication mode="Forms">&amp;你的问题会解决。

使用以下代码

测试您的网站

if (Page.User.Identity.Name != "" ) { Label1.Text = "Hello"; } else { Response.Redirect("login.aspx?url=Upload.aspx"); }

答案 4 :(得分:1)

这不会解决原帖,但是想把它放在这里,以防其他人在搜索为什么user.identity没有返回任何内容时偶然发现这个...

在我的情况下,User.Identity在更新用户广告用户名(特别是pre-windows 2000用户名)后开始没有返回任何内容。

IIS上的LSA缓存是个问题。即使在重新启动IIS服务器后,问题仍然存在问题。直到添加此处概述的注册表设置,问题才得以解决:

https://support.microsoft.com/en-us/help/946358/the-lsalookupsids-function-may-return-the-old-user-name-instead-of-the

答案 5 :(得分:0)

对于空白回复,我的解决方案最终成为web.config。我正在使用Visual Studio 2010,默认的web.config不起作用。我用几乎空的web.config替换它然后成功!也许默认的vs2010 web.config调用了太多引用,或者为了使用User.Identity.Name错误地配置了IIS。我的系统是Windows7。

来自vs2010的默认asp.net网站web.config大约有100-115行。正如您在下面看到的那样,几乎空的web.config大约有20行。


我使用的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <system.web>
   <authentication mode="Windows" />
   <authorization>
      <allow roles="Doman Name\Group Name" users="" />
      <deny users="*" />
   </authorization>

  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
        <security>
            <authorization>
                <add accessType="Allow" users="" roles="Doman Name\Group Name" />
            </authorization>
        </security>
  </system.webServer>

</configuration>

答案 6 :(得分:0)

使用WIF时,您应该使用Thread.CurrentPrincipal.Identity.Name而不是User.Identity.Name。

在此处阅读更多内容:http://msdn.microsoft.com/en-us/magazine/ff872350.aspx以了解有关Windows Identity Foundation的更多信息

类似的问题:User.Identity.Name is null after authenticate via WIF

答案 7 :(得分:0)

  1. 在 IIS 中:点击您的网站
  2. 在主页中:身份验证
  3. 在操作菜单中:打开功能
  4. 禁用匿名身份验证
  5. 重启网站

steps 1,2,3

step 4