所以这是场景,我有一个使用自定义身份验证的Asp.Net应用程序&成员资格提供者,但我们需要允许完全匿名访问(即)应用程序内的特定文件夹。
在IIS管理器中,您可以设置文件夹的身份验证模式,但设置会保存在C:\Windows\System32\inetsrv\config\applicationHost.config
文件as described here
为了使安装更容易,如果我可以在我的web.config中设置它会很棒,但经过几次尝试后我认为这可能是不可能的。
有人知道吗?
非常感谢
答案 0 :(得分:50)
第一种方法是使用<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从“Deny”更改为“Allow”:
<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>
答案 1 :(得分:43)
使用<location>
配置代码和<allow users="?"/>
仅允许匿名或<allow users="*"/>
允许所有人:
<configuration>
<location path="Path/To/Public/Folder">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
</configuration>
答案 2 :(得分:3)
<location path="ForAll/Demo.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
另外:如果你想通过网站在该文件夹上写一些东西,你必须给该文件夹的IIS_User权限
答案 3 :(得分:1)
为了使它工作,我构建我的目录:
项目 上市 限制
所以我编辑了我的公共文件夹的webconfig:
<location path="Project/Public">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
对于我的Restricted文件夹:
<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
我希望我有所帮助。
答案 4 :(得分:0)
我将web.config添加到特定文件夹中说&#34;用户&#34; (VS 2015,C#) 以及添加的以下代码
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
最初我使用的是位置标记但是没有用。