【问题标题】:Allow IIS 7.5 from serving static files through ASP.NET pipeline允许 IIS 7.5 通过 ASP.NET 管道提供静态文件
【发布时间】:2015-04-02 23:44:19
【问题描述】:
我有几个文件夹要被排除在阻止之外,例如 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>
【问题讨论】:
标签:
c#
asp.net
iis
web-config
config
【解决方案1】:
我认为你做不到。
Microsoft 的一般经验法则是,拒绝总是胜过允许,因此,如果您在根级别拒绝访问,那么您将无法授予较低级别的访问权限,除非您可以删除从根级别继承的权限。我认为没有办法删除那些继承的权限。我试过把它放在下面,但这是无效的。
因此,您必须在需要拒绝访问的每个文件夹上设置拒绝所有用户,您不能将其默认为拒绝。另外,如果所有用户都拒绝该内容,也许您不应该在 IIS 站点中包含大量内容?
【解决方案2】:
这就是我们使用的
<location path="Scripts">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
您必须确保您没有拦截请求并针对上述任何资源发出 401 Unauthorized 的 httpmodule
以下是我的路由配置,以便 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");