如何配置Azure App Service以允许下载*.config文件
解决方案
你之前仅配置MIME类型不生效的核心原因是:Azure App Service Windows环境默认使用IIS托管站点,IIS默认在请求过滤规则里直接禁止了.config后缀的文件对外访问,该规则优先级比MIME类型配置更高,仅添加MIME规则不会生效。
方案1:修改web.config同时配置请求过滤和MIME类型
在站点根目录的web.config里同时添加如下配置,先解除.config的访问限制,再配置对应MIME类型即可:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <!-- 解除.config文件的默认请求过滤禁止规则 --> <security> <requestFiltering> <fileExtensions> <remove fileExtension=".config" /> <add fileExtension=".config" allowed="true" /> </fileExtensions> </requestFiltering> </security> <!-- 配置.config文件对应的MIME类型 --> <staticContent> <remove fileExtension=".config" /> <add fileExtension=".config" mimeType="text/xml" /> </staticContent> </system.webServer> </configuration>
配置完成后重启App Service实例,再验证访问是否正常。
方案2:Linux环境App Service适配方案
如果你的App Service使用Linux托管,IIS规则不会生效,需要根据你使用的Web服务修改对应配置:
- 若使用Nginx:在Nginx配置文件中删除默认屏蔽.config文件的规则,同时添加
types { text/xml .config; }配置,重启Nginx服务即可 - 若使用Apache:在.htaccess文件中添加针对.config文件的访问允许规则,同时配置
AddType text/xml .config
临时验证方案
如果修改配置后仍有问题,可以先将ClickOnce应用中的.config文件后缀改为自定义后缀(如.config_),在应用下载逻辑中修改请求后缀,下载完成后再重命名为.config使用,该方法仅用于排查问题不推荐正式环境使用。
配置完成后直接在浏览器中访问.config文件的URL,能正常返回内容而非404即代表配置生效,此时再启动ClickOnce应用验证下载逻辑即可。
内容的提问来源于stack exchange,提问作者statler
相关产品推荐
相关产品推荐

