Asp.net LogonUserIdentity.Name与User.Identity.Name

Asp.net LogonUserIdentity.Name与User.Identity.Name,asp.net,c#-4.0,.net-4.0,Asp.net,C# 4.0,.net 4.0,我有一个运行在4.0框架上的ASP.NET Web窗体应用程序项目。我非常熟悉Web应用程序,但不太熟悉Web窗体应用程序。今天,我遇到了他们两人之间的显著差异,我对为什么会存在这种差异感到困惑 通常,在Web应用程序中,如果我想确定页面的当前用户是谁,那么我只需从user.Identity.Name检索他们的域登录。因此,当我点击F5在调试环境中运行我的解决方案(我的Web表单应用程序!)时,我感到非常困惑,发现User.Identity.Name是空的。于是我在谷歌上搜索了“User.Ide

我有一个运行在4.0框架上的ASP.NET Web窗体应用程序项目。我非常熟悉Web应用程序,但不太熟悉Web窗体应用程序。今天,我遇到了他们两人之间的显著差异,我对为什么会存在这种差异感到困惑

通常,在Web应用程序中,如果我想确定页面的当前用户是谁,那么我只需从user.Identity.Name检索他们的域登录。因此,当我点击F5在调试环境中运行我的解决方案(我的Web表单应用程序!)时,我感到非常困惑,发现User.Identity.Name是空的。于是我在谷歌上搜索了“User.Identity.Name为空”,然后遇到了一堵链接墙,这些链接大多都是针对那些在IIS中没有禁用匿名身份验证的人的。当然,这不是我的问题(我想),因为我只是在这里从VisualStudio2012进行调试

然而,我继续挖掘,最终在HttpContext上发现了一些模糊的属性,这些属性不是空的,并返回用户的域登录。属性为HttpContext.Current.Request.LogonUserIdentity.Name
。这就引出了我的问题

问题在我的Web表单应用程序中,为什么User.Identity.Name为空,而HttpContext.Current.Request.LogonUserIdentity.Name为空

提前感谢您的帮助

编辑:忘了说明我的web.config中有什么内容(因为我确信如果我没有,它会被询问!)



除了EntityFramework的标记之外,我的web.config中几乎只有这些

我自己找到了答案。IIS Express的applicationhost.config设置为不允许windows身份验证。我只是简单地设置enabled=“true”,然后设置User.Identity不再为空


编辑:
1) 我为缺乏信息而道歉。实际上,我在原始答案中修改了XML标记,但我显然忘记了通过单击“代码示例”按钮将它们标记为代码,因此XML标记从未显示过!他们现在应该看得见了


2) 我修改的applicationhost.config的位置在我的文档下面的几个文件夹中。确切位置是:C:\Users[您的用户]\My Documents\IISExpress\config

+1,但不要让我挂断!我在哪里可以找到这个
applicationhost.config
文件?这是用于我的本地计算机还是Visual Studio Program Files文件夹中的某个位置?您在哪里设置了此enabled=“true”?哪把钥匙?@Taosique,你否决了吗?我发现它对我非常有用——主要是这个问题,但在我问了之后,他回来提供了更多的细节,这些细节对我也很有帮助。