我正在使用HttpContext.Current.User.Identity.Name来获取Web应用程序正在使用时的用户名。在开发过程中,我使用了我的本地iis,启用了集成的Windows身份验证,启用了匿名访问和禁用,并且我能够获得用户名。
现在,当我发布Web应用程序时,它又回来了。已发布服务器上的设置是相同的,我尝试使用Page.User.Identity.Name,它也返回空白。
有谁知道这是为什么以及如何解决它?
答案 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服务器后,问题仍然存在问题。直到添加此处概述的注册表设置,问题才得以解决:
答案 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行。
<?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的更多信息
答案 7 :(得分:0)