繁体   English   中英

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

[英]How to allow anonymous user access to virtual directory

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

/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>

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

在你的全局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. 星号(*)代表所有身份。

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

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

  4. 转到IIS,在虚拟目录下>选择身份验证>启用匿名身份验证。

参考

ASP.NET授权

如何:在IIS中创建和配置虚拟目录

在您的全局web.config中删除

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

然后去IIS经理和

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

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

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

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

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

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM