允许web.config中的单个文件夹的匿名身份validation?

所以这里是这种情况,我有一个Asp.Net应用程序使用自定义身份validation和成员资格提供程序,但我们需要完全匿名访问(即)到应用程序中的特定文件夹。

在IISpipe理器中,您可以设置文件夹的身份validation模式,但是这些设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config文件中,如此处所述

为了使安装更容易,如果我可以在我的web.config中设置它,但是经过几次尝试,我认为这可能是不可能的。

有谁知道吗?

非常感谢

使用<location>configuration标签, <allow users="?"/>只允许匿名或<allow users="*"/>用于全部:

 <configuration> <location path="Path/To/Public/Folder"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> </configuration> 

第一种方法是使用<location>configuration标签修改web.config, <allow users="?"/>允许所有人使用匿名或<allow users="*"/>

 <configuration> <location path="Path/To/Public/Folder"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> </configuration> 

如果这种方法不起作用,那么可以采取以下方法,这需要对IIS applicationHost.config进行小的修改。

首先,将C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config中的anonymousAuthentication部分的overrideModeDefault从“Deny”更改为“Allow”

 <section name="anonymousAuthentication" overrideModeDefault="Allow" /> 

overrideMode是IIS的一个安全特性。 如果在applicationHost.config中的系统级别禁止覆盖,那么在web.config中没有任何东西可以启用它。 如果您的目标系统没有这种级别的访问权限,则必须与您的托pipe提供商或系统pipe理员进行讨论。

其次,在设置overrideModeDefault="Allow"之后,你可以把下面的代码放到你的web.config中:

 <location path="Path/To/Public/Folder"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" /> </authentication> </security> </system.webServer> </location> 
 <location path="ForAll/Demo.aspx"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> 

另外:如果你想通过网站在这个文件夹上写东西,你必须给这个文件夹一个IIS_User权限

为了使它工作,我build立我的目录是这样的:

项目公共限制

所以我编辑我的公共文件夹的webconfig:

 <location path="Project/Public"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> 

对于我的Restricted文件夹:

  <location path="Project/Restricted"> <system.web> <authorization> <allow users="?"/> </authorizatio> </system.web> </location> 

我希望我能帮上忙

我添加web.config到特定的文件夹说“用户”(VS 2015,C#)和添加以下代码

 <?xml version="1.0"?> <configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </configuration> 

最初我使用位置标记,但没有奏效。