使用IIS Express但HttpContext.Current.User.Identity.Name为空,但不是Visual Studio Development Server

当Visual Studio设置为“使用本地IIS Web服务器”时, HttpContext.Current.User.Identity.Name为空/空白,但在Visual Studio设置为“使用Visual Studio开发服务器”时可正常工作。

希望您可以通过执行以下操作在Visual Studio 2010或2012中复制此问题(我已尝试过两者):

创建一个新的“ASP.NET空Web应用程序”,选择“.NET Framework 4”并将其命名为“WindowsAuthTest2”。 用。替换Web.config的内容

         

接下来,在名为“Default.aspx”的项目中添加一个新的“Web窗体”。 用Default替换Default.aspx中的代码

          

并用Default替换Default.aspx.cs中的代码

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WindowsAuthTest2 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Label1.Text = "[" + HttpContext.Current.User.Identity.Name + "]"; } } } 

我没有ReSharper告诉我哪些使用语句是不必要的。

然后,您可以通过右键单击项目,选择“属性”(或双击项目下的“属性”),选择“Web”,然后导航到“服务器”部分,选择Visual Studio将使用的Web服务器。

尝试使用“使用Visual Studio开发服务器”和“使用本地IIS Web服务器”。

希望您可以帮助我找出当选择“使用本地IIS Web服务器”时HttpContext.Current.User.Identity.Name为空的原因。

我通过更改身份validation中的IIS来解决此问题

 Windows Authenticaon = Enabled Anonymous Authenticaon = DISABLED <=== Important ASP.NET Impersonation Enabled 

我的IIS

我解决了! 您需要在文件夹中授予“NETWORK”,“NETWORK SERVICE”和IIUSRS的权限。 并禁用匿名访问。