我们正在为我们自己的应用程序提供文件,供从 Web 服务器(包括 IIS)下载。其中一个文件的.config
扩展名为。结果发现 IIS 不会提供此文件,因为它认为这是它自己的配置文件。我正考虑改用 just .configuration
。这样可以吗?是否有 IIS 提供的“禁用”扩展名列表?
答案1
是的,有一个需要阻止的扩展列表,称为请求过滤,您可以运行:appcmd list config -section:system.webServer/security/requestFiltering,您将看到类似以下内容:......
在我的 Windows 7 机器中,该列表包括:
.asa、.asax、.ascx、.master、.skin、.browser、.sitemap、.config、.cs、
.csproj、.vb、.vbproj、.webinfo、.licx、.resx、.resources、.mdb、.vjsproj、
.java、.jsl、.ldb、.dsdgm、.ssdgm、.lsad、.ssmap、.cd、.dsprototype、.lsaprototype
、.sdm、.sdmDocument、.mdf、.ldf、.ad、.dd、.ldd、.sd、
.adprototype、.lddprototype、.exclude、.refresh、.compiled、.msgx、.vsdisco
请注意,您还可以在应用程序中指定更多扩展或通过使用文件夹内的 web.config 来允许其他可能不允许的扩展。
警告不要这样做,因为 .config 文件可能包含敏感信息。
例如,如果你在应用程序内放置一个包含以下内容的 web.config,它将允许用户下载 .config 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".config" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>
更多信息请参阅:http://www.iis.net/configReference/system.webServer/security/requestFiltering
最后,如果您要使用一些随机扩展名,则需要确保 IIS 也知道要使用什么 mime 类型,并且知道如果您要允许静态文件下载将使用的扩展名,并且需要将其放在 staticContent 部分内 (appcmd list config -section:system.webServer/staticContent)。您也可以像上面一样在 web.config 中配置它。
答案2
您只需将所有文件压缩为 .zip 格式,然后就可以为任何您想要的扩展提供服务。