如何允许匿名用户访问虚拟目录
How to allow anonymous user access to virtual directory
我目前正在阻止匿名用户访问我的根应用程序。
/web.config
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
但我允许匿名访问 public 资源(图片、CSS 等):
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
现在,我想添加一个匿名用户应该可以访问的虚拟目录。我添加了一个基于图像路径的配置,但每当我尝试访问该位置时,我都会被重定向到登录页面,其中 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 中删除
<location path="virtualDirectory">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
然后转到 IIS 管理器并
在虚拟目录主页区域,双击身份验证
右键单击“匿名身份验证”,然后单击“启用”
您的授权规则看起来不错。您得到的最后一个错误是因为每个 folder/file/path 只能有一次授权部分(实际上是任何部分)。因此,要么在全球范围内使用它,即在 <location path="virtualDirectory">
下,要么仅在虚拟目录的 web.config 中。在两个地方都有它会给你一个错误。什么是在虚拟目录中设置的身份验证。
确保匿名 与允许授权规则一起启用。
(IIS 管理器 -> 站点 -> 您的特定站点 -> 虚拟目录 -> 在中央窗格中验证)
在 IIS GUI 中还有 ASP.NET 授权规则(您当前使用的规则)和 IIS 授权规则。确保没有任何拒绝 IIS 授权规则。
在你的全局web.config封装
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
和
<location path="." inheritInChildApplications="false">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
这意味着 - 授权仅在根应用程序中强制执行,而不是针对子应用程序。
一些笔记。
星号(*)代表所有身份。
问号(?)代表匿名身份
所以理想情况下,您不需要在全局 web.config.
中设置允许对您的虚拟目录的匿名用户进行身份验证
转到 IIS,在您的虚拟目录下 > select 身份验证 > 启用匿名身份验证。
参考
我目前正在阻止匿名用户访问我的根应用程序。
/web.config
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
但我允许匿名访问 public 资源(图片、CSS 等):
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
现在,我想添加一个匿名用户应该可以访问的虚拟目录。我添加了一个基于图像路径的配置,但每当我尝试访问该位置时,我都会被重定向到登录页面,其中 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 中删除
<location path="virtualDirectory">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
然后转到 IIS 管理器并
在虚拟目录主页区域,双击身份验证
右键单击“匿名身份验证”,然后单击“启用”
您的授权规则看起来不错。您得到的最后一个错误是因为每个 folder/file/path 只能有一次授权部分(实际上是任何部分)。因此,要么在全球范围内使用它,即在 <location path="virtualDirectory">
下,要么仅在虚拟目录的 web.config 中。在两个地方都有它会给你一个错误。什么是在虚拟目录中设置的身份验证。
确保匿名 与允许授权规则一起启用。 (IIS 管理器 -> 站点 -> 您的特定站点 -> 虚拟目录 -> 在中央窗格中验证)
在 IIS GUI 中还有 ASP.NET 授权规则(您当前使用的规则)和 IIS 授权规则。确保没有任何拒绝 IIS 授权规则。
在你的全局web.config封装
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
和
<location path="." inheritInChildApplications="false">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
这意味着 - 授权仅在根应用程序中强制执行,而不是针对子应用程序。
一些笔记。
星号(*)代表所有身份。
问号(?)代表匿名身份
所以理想情况下,您不需要在全局 web.config.
中设置允许对您的虚拟目录的匿名用户进行身份验证
转到 IIS,在您的虚拟目录下 > select 身份验证 > 启用匿名身份验证。
参考