这是一个老问题,但我只是根据原始帖子在 Orchard CMS 上下文中专门问了自己同样的问题,并且我得到了 Orchard 特定的答案。
在 Orchard CMS 的根目录中,有一个 web.config 想要阻止所有用户请求单独的静态文件。例如,您不希望人们从主题文件夹下载placement.info 或theme.txt。这是一个很好的“阻止一切,允许你需要的东西”的方法。
<handlers accessPolicy="Script">
<!-- Clear all handlers, prevents executing code file extensions or returning any file contents. -->
<clear />
<!-- Return 404 for all requests via a managed handler. The URL routing handler will substitute the MVC request handler when routes match. -->
<add name="NotFound" path="*" verb="*" type="System.Web.HttpNotFoundHandler" preCondition="integratedMode" requireAccess="Script" />
[...]
</handlers>
问题是,在 Scripts(包含静态 js 文件)、Styles(仅包含大量静态 css 文件)或 Content(例如包含静态图像)等子文件夹中,您当然希望允许 Web 浏览器请求个人文件。因此,在这些子文件夹中,您有一个额外的 web.config,如下所示:
<handlers accessPolicy="Script,Read">
<!-- For any request to a file exists on disk, return it via native http module. AccessPolicy="Script" above is to allow for a managed 404 page. -->
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
</handlers>
PS:我目前正在玩主题,出于某种原因,我不得不在所有这些子 web.config 中的<remove name="StaticFile"/>
每个之前添加。<add name="StaticFile"...>