You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署至Azure App Service子目录时Blazor应用JSON文件404问题

解决Blazor Web App部署到Azure App Service子目录时JSON文件404(SECURITY_DENIED_BY_MIMEMAP)的问题

问题回顾

将Blazor Web App部署到Azure App Service的wwwroot/subdir子目录时,加载JSON文件返回404错误;部署到根目录则正常。本地运行无问题,FTP确认JSON文件存在,改为.txt后缀可正常访问。已在web.config中添加<remove fileExtension=".json" />和<mimeMap fileExtension=".json" mimeType="application/json" />但无效,服务器日志显示SECURITY_DENIED_BY_MIMEMAP错误,仅.json.gz格式文件可正常访问。

解决方案

1. 为子目录单独配置web.config

Azure App Service的配置规则按目录层级生效,根目录的web.config不会自动覆盖子目录的默认限制。需要在subdir子目录下创建独立的web.config,内容如下:

<configuration>
  <system.webServer>
    <staticContent>
      <!-- 移除默认的JSON MIME映射,避免冲突 -->
      <remove fileExtension=".json" />
      <!-- 显式添加JSON的MIME类型 -->
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
    <!-- 显式允许JSON文件访问,解决安全限制 -->
    <security>
      <requestFiltering>
        <fileExtensions>
          <remove fileExtension=".json" />
          <add fileExtension=".json" allowed="true" />
        </fileExtensions>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

2. 确保Github Actions部署脚本同步子目录配置

检查你的Github Actions部署步骤,确认子目录下的web.config被正确上传到Azure App Service的对应路径。例如使用azure/webapps-deploy动作时,确保package参数包含子目录内容,或单独指定子目录的同步规则。

3. 强制刷新Azure缓存并重启服务

Azure App Service可能缓存旧的配置或文件,部署完成后:

  • 进入Azure Portal的App Service页面,点击重启按钮;
  • 或者通过Kudu工具(https://your-app-name.scm.azurewebsites.net)的CMD控制台,执行以下命令清除子目录缓存:
    del /s /q %home%\site\wwwroot\subdir\*.json
    
    之后重新部署项目,确保文件和配置完全更新。

4. 验证配置生效

部署完成后,直接访问子目录下的JSON文件URL(如https://your-app-name.azurewebsites.net/subdir/your-file.json),确认返回200状态码和正确的JSON内容。

内容的提问来源于stack exchange,提问作者Gareth Waterhouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:20:30