即使将身份validation模式设置为“Windows”,ASP.Net MVC4 User.Identity.Name也会变为空

我正在研究ASP.Net MVC-4应用程序。 我必须实现Windows身份validation。 我在web.config文件中将身份validation模式设置为“Windows”,如下所示。

   

在控制器中我尝试获取如下的用户名。

  string userName = User.Identity.Name; 

但每次我都变得空虚。 如有任何建议,请告诉我。 提前致谢。

IIS执行Windows身份validation以建立我们的托管代码User.Identity 。 因此,您需要在IIS中启用Windows身份validation ,并且为了强制用户在能够访问我们的应用程序之前进行身份validation,您需要禁用匿名身份validation

在此处输入图像描述

使用给定的信息,看起来您已正确配置项目但尚未对用户进行实际身份validation。

首先是一些背景。 在asp.net上有一个简化的教程,在这两行之间,提到了以下语句:

默认情况下,ASP.NET开发Web服务器在当前Windows帐户的上下文中执行所有页面(无论您用于登录Windows的帐户)。

这意味着当您使用F5运行项目时,它会执行当前登录的用户帐户下所有内容。 但是,它尚未针对应用程序进行身份validation,因此您的User.Identity。*尚未设置。

为了validation是否是这种情况,您应该在ASP.NET MVC项目中调用的第一个控制器(或Action)上添加[Authorize]属性。 很可能你会遇到“HTTP Error 401.0 – Unauthorized”exception。 在这种情况下,您应首先启用您的网络服务器进行身份validation。 上面提到的教程将为您提供帮助。