如何允许匿名用户访问虚拟目录

时间:2016-09-07 15:57:05

标签: asp.net iis virtual-directory asp.net-authorization

我目前正在阻止匿名用户访问我的根应用程序。

/web.config

  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>

但允许匿名访问公共资源(图片,CSS等):

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

现在,我想添加一个匿名用户可以访问的虚拟目录。我添加了一个基于Images路径的配置,但每当我尝试访问该位置时,我都会被重定向到登录页面,并将ReturnURL设置为虚拟目录。

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

此外,我尝试在我的虚拟目录的web.config中指定全局授权,但是得到一个错误,说我只能拥有一次

/virtualDirectory/web.config:

  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>

当我的root应用程序阻止匿名访问时,如何允许匿名访问虚拟目录?

4 个答案:

答案 0 :(得分:4)

在您的全局web.config中封装

<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

<location path="." inheritInChildApplications="false">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>   
</location>

这意味着 - 授权仅在root应用中强制执行,而不是针对子应用。

答案 1 :(得分:3)

一些注释。

  1. 星号(*)代表所有身份。

  2. 问号(?)代表匿名身份。

  3. 理想情况下,您无需在全局web.config中设置允许对virtualDirectory的匿名用户进行身份验证。

  4. 转到IIS,在您的虚拟目录&gt;下;选择身份验证&gt;启用匿名身份验证。

  5. 参见

    ASP.NET Authorization

    How to: Create and Configure Virtual Directories in IIS

答案 2 :(得分:0)

在您的全球web.config中删除

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

然后转到IIS管理器并

  1. 在虚拟目录主页区域中,双击身份验证

  2. 右键单击“匿名身​​份验证”,然后单击“启用”

答案 3 :(得分:0)

您的授权规则看起来不错。您收到的最后一个错误是因为每个文件夹/文件/路径只能有一次授权部分(实际上是任何部分)。因此要么全局使用它,要么在<location path="virtualDirectory">下或仅在虚拟目录的web.config中。在两个地方都有它会给你一个错误。什么是虚拟目录中设置的身份验证。

确保启用匿名以及允许授权规则。 (IIS管理器 - &gt;站点 - &gt;您的特定站点 - &gt;虚拟目录 - &gt;在中央窗格中验证)

在IIS GUI中还有ASP.NET授权规则(您当前使用的规则)和IIS授权规则。确保没有任何拒绝的IIS授权规则。

enter image description here