Asp.net 已将应用程序升级到MVC 4,验证用户为空

Asp.net 已将应用程序升级到MVC 4,验证用户为空,asp.net,security,asp.net-mvc-4,asp-classic,iis-6,Asp.net,Security,Asp.net Mvc 4,Asp Classic,Iis 6,我有一个混合的经典ASP+ASP.NETMVC4应用程序,在WinServer2K3(IIS6)下运行,我们已经升级到使用MVC4 ASP应用程序通过虚拟目录连接到.NET应用程序。它们在同一个应用程序池中运行(如果这很重要的话)。此特定应用程序是一个管理控制面板,使用基本身份验证: 在升级项目之前,当访问虚拟文件夹的url时,浏览器将显示一个登录提示,在此输入我的域限定用户名和密码。然后,ASP代码通过Request.ServerVariables(“AUTH_HEADER”)检索用户名,将

我有一个混合的经典ASP+ASP.NETMVC4应用程序,在WinServer2K3(IIS6)下运行,我们已经升级到使用MVC4

ASP应用程序通过虚拟目录连接到.NET应用程序。它们在同一个应用程序池中运行(如果这很重要的话)。此特定应用程序是一个管理控制面板,使用基本身份验证:

在升级项目之前,当访问虚拟文件夹的url时,浏览器将显示一个登录提示,在此输入我的域限定用户名和密码。然后,ASP代码通过
Request.ServerVariables(“AUTH_HEADER”)
检索用户名,将其与存储在数据库中的应用程序级权限列表进行比较,并基于此启用或禁用管理站点中的功能

升级项目后,我仍然会收到登录提示,但是
Request.ServerVariables(“AUTH\u USER”)
返回一个空字符串

我已将旧项目添加到新网站中,以便可以在同一服务器上并行运行它们。旧代码继续工作。新法规拒绝承认。每个版本的.NET应用程序中的
admin
虚拟目录指向磁盘上相同的物理位置,并且两个.NET应用程序中文件夹的身份验证配置相同

建议?请注意,MVC4应用程序使用的是.NET4框架,而不是服务器上未安装的.NET4.5


注意尽管屏幕截图中的
默认域
字段为空,但已正确配置。出于明显的原因,我已将其从映像中删除。

请求。当您将应用程序配置为使用窗体身份验证而不是Windows身份验证时,可以获取服务器变量(“AUTH\u USER”)。如果是Windows身份验证,则应使用Request.ServerVariables(“登录用户”)

请求。将应用程序配置为使用窗体身份验证而不是Windows身份验证时,可以获取ServerVariables(“身份验证用户”)。如果是Windows身份验证,则应使用Request.ServerVariables(“登录用户”)

。。。我正在与这样一种情况作斗争:我有一个混合的经典ASP/ASP.NET应用程序,使用Windows auth,在ASP页面上,auth_用户可以很好地拉动用户。但是在ASP.NET页面(在.NET v4.0上运行)上,AUTH_USER生成应用程序池的帐户,而LOGON_USER生成正确的帐户。此外,System.Security.Principal.WindowsIdentity.GetCurrent().Name还生成应用程序池帐户。我想知道为什么会出现这种情况……针对任何遇到类似问题的人的更新—在我的案例中似乎发生了这种情况,因为我将authenticatedUserOverride设置设置为useWorkerProcessUser。这样做是为了使用Windows auth,但让IIS使用应用程序池帐户访问磁盘上的文件。但这样做的一个副作用是,AUTH_USER、REMOTE_USER和大多数其他获取客户端用户名的标准方法将返回应用程序池帐户。解决方法是使用LOGON_USER server变量,在这种情况下,它似乎是唯一一个仍然保存客户端用户名的变量。。。我正在与这样一种情况作斗争:我有一个混合的经典ASP/ASP.NET应用程序,使用Windows auth,在ASP页面上,auth_用户可以很好地拉动用户。但是在ASP.NET页面(在.NET v4.0上运行)上,AUTH_USER生成应用程序池的帐户,而LOGON_USER生成正确的帐户。此外,System.Security.Principal.WindowsIdentity.GetCurrent().Name还生成应用程序池帐户。我想知道为什么会出现这种情况……针对任何遇到类似问题的人的更新—在我的案例中似乎发生了这种情况,因为我将authenticatedUserOverride设置设置为useWorkerProcessUser。这样做是为了使用Windows auth,但让IIS使用应用程序池帐户访问磁盘上的文件。但这样做的一个副作用是,AUTH_USER、REMOTE_USER和大多数其他获取客户端用户名的标准方法将返回应用程序池帐户。解决方法是使用LOGON_USER server变量,在这种情况下,该变量似乎是唯一仍然保存客户端用户名的变量。