我正在尝试获取默认允许访问的最简单示例,拒绝访问,除非对IIS中的特定目录进行身份验证,才能正常工作。当你围绕谷歌时,每个人都说它就像这样简单:
<location path="~/pages">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
不知怎的,它不适合我。
这是项目结构:
这是Web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/" />
</authentication>
<authorization>
<!--<deny users="*"/>-->
</authorization>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
<location path="~/pages">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>
目标是允许所有用户访问index.html并拒绝访问网页中的所有内容。
以下是我的观察:
<!--<deny users="*"/>-->
在未注释时有效。<modules runAllManagedModulesForAllRequests="true" />
,它根本不起作用。删除它,deny
在任何地方都无效。deny
中的<location path="~/pages">
不起作用。将路径设置为pages
或pages/secure.html
或~/pages/secure.html
也不起作用。这里有什么问题?
答案 0 :(得分:2)
它不喜欢路径&#34;〜/ pages&#34; 。以下适用于我
<configuration>
<system.web>
<authentication mode="Forms"/>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>
<!-- note the change below -->
<location path="pages" >
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>