IIS7,web.config 只允许在网站的 /uploads 目录中使用静态文件处理程序

Posted

技术标签:

【中文标题】IIS7,web.config 只允许在网站的 /uploads 目录中使用静态文件处理程序【英文标题】:IIS7, web.config to allow only static file handler in directory /uploads of website 【发布时间】:2022-02-02 10:10:15 【问题描述】:

如果可能的话,我如何修改我的 web.config 以使子目录成为静态文件 - 里面的文件只会作为静态文件处理,即使它的名称是“aspx”或其他名称? 谢谢。

【问题讨论】:

为什么不阻止.as?x 上传? 因为除了 .as?x 之外可能还有很多,比如 .php、.asp 等等。 【参考方案1】:

将以下内容添加到文件夹中的web.config 文件中,该文件包含您希望仅作为静态内容提供的文件:

<configuration>
    <system.webServer>
        <handlers>
           <clear />
            <add 
                name="StaticFile" 
                path="*" verb="*" 
                modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" 
                resourceType="Either" 
                requireAccess="Read" />
        </handlers>
        <staticContent>
            <mimeMap fileExtension=".*" mimeType="application/octet-stream" />
        </staticContent>
    </system.webServer>
</configuration>

【讨论】:

在 IIS 和 IIS Express 上测试正常,但它不适用于 VS 集成 Web 服务器。 @deerchao - 不会因为集成的“cassini”服务器不支持&lt;system.webServer&gt; 在有人将新的 web.config 上传到您打开的上传文件夹并重新定义所有处理程序之前,它一直有效。见我的answer here。有关利用示例,请参阅 this link。 由于权限不足,我收到了 403.3。在&lt;handlers&gt; 标记中,我添加了&lt;remove name="StaticFile" /&gt; 而不是&lt;clear /&gt;,并将requireAccess 属性值从Write 更改为Read @WouterVanherck 很高兴您发现我的回答很有帮助:)

以上是关于IIS7,web.config 只允许在网站的 /uploads 目录中使用静态文件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何防止web.config在网站更新时使用webdeploy覆盖

跨域学习笔记3--web.config设置之system.webServer 详细介绍,为网站设置默认文档

使用 web.config 允许服务器端包含在 HTML 文件 (IIS) 中

IIS7下,显示PHP错误(不显示500错误,而显示详细错误)

IIS7.5使用web.config设置伪静态的方法

IIS7 网站发布常见问题及解决方案小结