所以这是场景,我有一个使用自定义身份验证和成员资格提供程序的 Asp.Net 应用程序,但我们需要允许完全匿名访问(即)应用程序中的特定文件夹。
在 IIS 管理器中,您可以设置文件夹的身份验证模式,但设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config
文件中,如此处所述
为了使安装更容易,如果我可以在我的 web.config 中设置它会很棒,但经过几次尝试我认为这可能是不可能的。
还有人知道吗?
非常感谢
所以这是场景,我有一个使用自定义身份验证和成员资格提供程序的 Asp.Net 应用程序,但我们需要允许完全匿名访问(即)应用程序中的特定文件夹。
在 IIS 管理器中,您可以设置文件夹的身份验证模式,但设置保存在C:\Windows\System32\inetsrv\config\applicationHost.config
文件中,如此处所述
为了使安装更容易,如果我可以在我的 web.config 中设置它会很棒,但经过几次尝试我认为这可能是不可能的。
还有人知道吗?
非常感谢
第一种方法是使用<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>
使用<location>
配置标签,并<allow users="?"/>
允许匿名或<allow users="*"/>
全部:
<configuration>
<location path="Path/To/Public/Folder">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
</configuration>
<location path="ForAll/Demo.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
另外:如果您想通过网站在该文件夹上写一些东西,您必须授予 IIS_User 对该文件夹的权限
为了使它工作,我像这样构建我的目录:
项目公共限制
所以我为我的公共文件夹编辑了我的 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
我希望我有所帮助。
我将 web.config 添加到特定文件夹中,例如“Users”(VS 2015,C#)并添加以下代码
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
最初我使用位置标签,但没有奏效。