13

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

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

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

4

8 回答 8

17

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

所以,

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

在应用程序的 IIS 配置中,查看身份验证选项卡

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

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

于 2013-11-22T17:35:33.897 回答
4

HttpContext.Current.Request.LogonUserIdentity.Name 在 VS 2012 环境和 IIS 7 中始终为我工作

于 2015-03-02T18:27:54.017 回答
3

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

- 单击开始,然后单击控制面板。打开程序组。
- 在程序和 - 功能下,单击打开或关闭 Windows 功能。
- 展开标有 Internet 信息服务的项目。
- 展开标有万维网服务的项目。-展开项目安全性->
确保选择Windows身份验证

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

于 2013-12-05T12:16:41.953 回答
1

使用 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 authentication via WIF

于 2013-02-28T15:23:20.740 回答
1

<authentication mode="Forms">在 web.config 文件中设置 &您的问题将解决。

使用以下代码测试您的网站

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

于 2013-10-24T17:09:51.560 回答
1

这不会解决原始帖子,但无论如何都想把它放在这里,以防其他人在搜索为什么 user.identity 什么都不返回时偶然发现这个......

在我的情况下,User.Identity 在更新用户广告用户名(特别是 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

于 2018-04-16T14:48:53.100 回答
0

For a blank return, my solution ended up being the web.config. I'm using Visual Studio 2010, and the default web.config did not work. I replaced it with a nearly empty web.config and then success! Perhaps the default vs2010 web.config called too many references or configured the IIS incorrectly for the use of User.Identity.Name. My system is Windows7.

Default asp.net web site web.config from vs2010 was about 100-115 lines long. As you can see below the nearly empty web.config is about 20 lines long.


the web.config that i used:

<?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>
于 2013-01-18T16:53:22.767 回答
0
  1. 在 IIS 中:单击您的站点
  2. 在主页中:身份验证
  3. 在操作菜单中:打开功能
  4. 禁用匿名身份验证
  5. 重新启动站点

步骤 1,2,3

第4步

于 2021-03-04T23:21:23.753 回答