Request.ServerVariables [“ LOGON_USER”]在Visual Studio 2015(VS2015)中返回空字符串

时间:2019-05-08 06:23:26

标签: .net asp.net-mvc login

我有一个ASP.NET MVC 5 Web应用程序,该应用程序在带有IIS Express的本地开发环境中的VS2012中运行。最近,我使用相同的代码库从VS2012迁移到VS2015。

我要实现的目标:我希望我的应用程序能够在VS2015中以及使用IIS7的部署服务器上成功运行

我当前的代码:

身份验证模式:表格

授权:允许匿名用户

“ Request.ServerVariables [” LOGON_USER“]”返回正确的用户详细信息

但是,当我尝试在VS2015中使用IIS Express执行相同的代码时,Request.ServerVariables [“ LOGON_USER”]返回一个空字符串

但是相同的代码在带有IIS7的部署服务器上可以正常工作

我在LoginController.cs中的原始代码

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.ServerVariables["LOGON_USER"]);

if (userIdentity.IsAuthenticated)
{
..............
}

Web.config中的原始代码

    <authentication mode="Forms">
      <forms loginUrl="~/Login/Login" timeout="2800"/>
    </authentication>

<system.web>
      <authorization>
        <allow users="*"/>      
      </authorization>
    </system.web>

为解决此问题,我尝试了以下

尝试1: 更改了我的登录控制器

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.ServerVariables["LOGON_USER"]);

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.LogonUserIdentity.Name)

AND

尝试2:

var userIdentity = new GenericIdentity(System.Security.Principal.WindowsIdentity.GetCurrent().Name);

结果: 对于try1和try2,userIdentity.IsAuthenticated均返回true

两者在本地都可以正常工作,但是将LoginController.cs中修改后的代码部署到服务器(IIS7服务器)时不起作用。

尝试3: 在Web应用程序中,web.config禁用了匿名访问。

<authorization>
   <deny users = "?" /> <!-- This denies access to the Anonymous user -->
   <allow users ="*" /> <!-- This allows access to all users -->
</authorization>

但是我保持LoginController.cs代码与原始

相同
var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.ServerVariables["LOGON_USER"]);

结果: 即使这样也不起作用。 “ Request.ServerVariables [” LOGON_USER“]”返回空字符串


当我将IDE从VS2012切换到VS2015时,我开始遇到此问题。

无论我尝试什么,它都可以在带有IIS Express的本地VS2015上或在我的部署服务器上正常工作。

我希望进行修复,使我的登录功能可以在具有Vs2015的本地Dev Env上以及部署服务器上运行,以便所有Dev都可以迁移到使用VS2015进行该项目。

谢谢!

0 个答案:

没有答案