2

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

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

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

4

1 回答 1

2

出现此问题的原因是如果您使用匿名访问安全来访问 .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 文件!

希望这能回答你的问题!

于 2013-03-26T19:14:00.333 回答