Request.ServerVariables(“LOGON_USER”)VS2010和VS2012

时间:2013-03-26 19:04:25

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

我遇到过一件非常奇怪的事情。我开始在Visual Studio 2010中开发一个网站,并于2012年完成。它是VB.NET,框架4.0。在整个网站中,我使用Request.ServerVariables(“LOGON_USER”)。一切都按预期工作。

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

有谁可以解释这里发生了什么,我如何在VS2012中修复它?谢谢!

1 个答案:

答案 0 :(得分:2)

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

要在使用除None之外的任何身份验证模式时填充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和VS之间有什么不同? 2012年,但这件事发生在我之前,我用上面的步骤来解决它。所以我说,只需检查你的web.config文件!

希望这能回答你的问题!