【问题标题】:Request.ServerVariables("LOGON_USER") VS2010 and VS2012Request.ServerVariables("LOGON_USER") VS2010 和 VS2012
【发布时间】:2013-03-16 17:39:46
【问题描述】:

我遇到了一件对我来说非常奇特的事情。我开始在 Visual Studio 2010 中开发一个网站,并于 2012 年完成。它是 VB.NET,框架 4.0。在整个网站中,我都使用 Request.ServerVariables("LOGON_USER")。一切正常。

我最近从一开始就开始使用 2012 开发另一个网站。发生的事情是 Request.ServerVariables("LOGON_USER") 不返回任何值!它简直是空的!但是,如果我用 Visual Studio 2010 打开同一个应用程序,它就可以工作!

谁能解释这里发生了什么以及如何在 VS2012 中修复它?谢谢!

【问题讨论】:

  • 为什么要使用服务器变量?使用User.Identity.Name
  • 您能详细说明区别吗?反正结果一样……
  • 不需要魔术字符串、可扩展 API 等。请参阅asp.net/web-forms/tutorials/security/introduction/… 了解概述。
  • 另外,您是否禁用了匿名身份验证?
  • This answer 可能会有所帮助。

标签: asp.net vb.net visual-studio-2010 visual-studio-2012 request.servervariables


【解决方案1】:

出现此问题的原因是,如果您使用匿名访问安全性来访问 .aspx 页,则不会填充 ServerVariables 集合中与身份验证相关的变量。如果您在 Web.config 文件的部分中授予匿名用户访问权限,也会出现此问题。

要在使用除无以外的任何身份验证模式时填充 LOGON_USER 变量,您可以在 web.config 部分中拒绝匿名用户的访问。

只需将 Web.config 文件中的身份验证模式更改为 None 以外的任何内容。例如,Web.config 文件中的以下条目将身份验证模式设置为基于表单的身份验证:

<authentication mode="Forms" />


<!-- To deny access to the Anonymous user in the Web.config file, use the following syntax: --!>

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

我不确定为什么 VS 2010 和 2012 之间会有所不同,但我以前也遇到过这种情况,我使用上述步骤进行了补救。所以正如我所说,只需检查您的 web.config 文件!

希望这能回答你的问题!

【讨论】:

  • 我已经读过这个,很遗憾,它没有帮助。我使用 Windows 身份验证,但这没关系,即使更改它也不会改变任何东西。我在 Web.config 中使用与我的其他应用程序相同的设置,该应用程序在 2012 年和 2010 年都适用……我对这个很困惑。也许它与该应用程序是在 2012 年而不是 2010 年创建的有关?除了 web.config 中的设置之外,我真的不知道 2012 还适用哪些设置...
猜你喜欢
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多