我遇到过一件非常奇怪的事情。我开始在Visual Studio 2010中开发一个网站,并于2012年完成。它是VB.NET,框架4.0。在整个网站中,我使用Request.ServerVariables(“LOGON_USER”)。一切都按预期工作。
我最近从一开始就开始使用2012开发另一个网站。会发生什么是Request.ServerVariables(“LOGON_USER”)不返回任何值!它简直是空的!但是,如果我使用Visual Studio 2010打开相同的应用程序,它可以工作!
有谁可以解释这里发生了什么,我如何在VS2012中修复它?谢谢!
答案 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文件!
希望这能回答你的问题!