IIS,拒绝访问静态文件;这个例子有什么问题?

时间:2014-10-01 15:23:11

标签: asp.net iis web-config forms-authentication static-files

我正在尝试获取默认允许访问的最简单示例,拒绝访问,除非对IIS中的特定目录进行身份验证,才能正常工作。当你围绕谷歌时,每个人都说它就像这样简单:

<location path="~/pages">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

不知怎的,它不适合我。

这是项目结构:

enter image description here

这是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">不起作用。将路径设置为pagespages/secure.html~/pages/secure.html也不起作用。

这里有什么问题?

1 个答案:

答案 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>