允许IIS 7.5通过ASP.NET管道提供静态文件

时间:2015-04-02 23:44:20

标签: c# asp.net iis web-config config

我有几个文件夹被排除在阻止内容,例如web.config中的内容,Javascript和脚本。请帮我实现这个目标。

这是配置:

<location path="TechDocs">
<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
  <authentication mode="None" />
  <authorization>
    <allow users="*" />
  </authorization>
  </system.web>
</location>
<location path="Content">
<system.web>
  <authentication mode="None" />
  <authorization>
    <allow users="*" />
  </authorization>
</system.web>
</location>
 <location path="Javascript">
<system.web>
  <authentication mode="None" />
  <authorization>
    <allow users="*" />
  </authorization>
</system.web>
</location>

2 个答案:

答案 0 :(得分:0)

这就是我们使用的

    <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="Css">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

您必须确保没有拦截请求的httpmodule,并为上述任何资源发送401 Unauthorized

以下是我的路由配置,以便MVC不会意外地将请求路由到MVC,您可以应用

            routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
            routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(ico|css|js|gif|jpg|woff|eot|svg|eot|ttf|otf)(/.*)?" });

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.wdgt/{*pathInfo}");
            routes.IgnoreRoute("ChartImg.axd/{*pathInfo}");
            routes.Ignore("{*pathInfo}", new { pathInfo = @"^.*(ChartImg.axd)$" });
            routes.IgnoreRoute("{resource}.svc");

答案 1 :(得分:0)

我认为你不能这样做。

微软的一般经验法则是Deny总是胜过Allow,因此如果您拒绝在根级别访问,那么您将无法在较低级别授予访问权限除非您可以删除从根级别继承的权限。我认为没有办法删除这些继承的权限。我尝试过,但这不是有效的。

因此,您必须在每个需要拒绝访问权限的文件夹上设置拒绝所有用户,您不能将其默认为拒绝。另外,如果所有用户都拒绝该内容,您可能不应该在IIS站点中拥有大量内容吗?