52

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

在 IIS 管理器中,您可以设置文件夹的身份验证模式,但设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config文件中,如此处所述

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

还有人知道吗?

非常感谢

4

5 回答 5

71

第一种方法是使用<location>配置标签修改您的 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 从“拒绝”更改为“允许”:

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

overrideMode是 IIS 的一项安全功能。如果在 applicationHost.config 中的系统级别不允许覆盖,则您无法在 web.config 中执行任何操作来启用它。如果您在目标系统上没有此级别的访问权限,则必须与您的托管服务提供商或系统管理员进行讨论。

其次,设置overrideModeDefault="Allow"之后,您可以将以下内容放入您的 web.config:

<location path="Path/To/Public/Folder">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>
于 2012-07-11T14:20:47.240 回答
53

使用<location>配置标签,并<allow users="?"/>允许匿名或<allow users="*"/>全部:

<configuration>
   <location path="Path/To/Public/Folder">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>
于 2012-04-27T13:05:29.457 回答
3
<location path="ForAll/Demo.aspx">
 <system.web>
  <authorization>
    <allow users="*" />
  </authorization>
 </system.web>
</location>

另外:如果您想通过网站在该文件夹上写一些东西,您必须授予 IIS_User 对该文件夹的权限

于 2012-04-27T13:17:10.430 回答
1

为了使它工作,我像这样构建我的目录:

项目公共限制

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

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

对于我的受限文件夹:

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

有关 * 和 ? 的规范,请参见此处:

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authorization/add

我希望我有所帮助。

于 2014-02-24T20:20:58.347 回答
0

我将 web.config 添加到特定文件夹中,例如“Users”(VS 2015,C#)并添加以下代码

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

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

于 2016-08-19T16:46:28.810 回答