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

Azure Pipelines部署Blazor WASM,Static Web App不识别staticwebapp.config.json

解决Blazor WASM部署Azure Static Web App导航回退及登录回调404问题

核心问题定位

你的staticwebapp.config.json配置本身无语法问题,但Azure Static Web App(ASWA)未正确读取该文件,导致导航回退规则失效,进而authentication/login-callback这类单页应用路由返回404。问题根源大概率是CI/CD部署过程中配置文件未被正确纳入部署包,或部署路径配置错误。

修复步骤

1. 确认配置文件位置

staticwebapp.config.json必须放在Blazor WASM项目的wwwroot目录下——编译发布后,该文件会被复制到发布输出的根目录,这是ASWA识别配置文件的要求。不要将其放在项目根目录,ASWA不会读取该位置的配置。

2. 确保项目文件包含配置文件

检查.csproj文件,添加以下配置确保staticwebapp.config.json被复制到发布目录:

<ItemGroup>
  <None Update="wwwroot\staticwebapp.config.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  </None>
</ItemGroup>

这一步能保证发布时,配置文件被同步到bin/Release/netX.X/publish/wwwroot目录下。

3. 完整可用的Azure Pipelines YAML部署脚本

放弃PublishPipelineArtifact@1的间接部署方式,直接使用官方AzureStaticWebApp@0任务(ASWA推荐的部署方式),以下是完整脚本:

trigger:
- main  # 替换为你的目标分支名

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: UseDotNet@2
  displayName: '安装匹配的.NET SDK'
  inputs:
    packageType: 'sdk'
    version: '7.x'  # 替换为你的Blazor项目使用的.NET版本

- task: DotNetCoreCLI@2
  displayName: '构建并发布Blazor应用'
  inputs:
    command: 'publish'
    projects: '**/YourBlazorProject.csproj'  # 替换为你的项目路径
    arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)/wwwroot'
    zipAfterPublish: false

- task: AzureStaticWebApp@0
  displayName: '部署到Azure Static Web App'
  inputs:
    app_location: 'wwwroot'  # 发布输出的wwwroot目录路径,确保配置文件在此目录下
    api_location: ''  # 独立Blazor WASM无后端API,留空即可
    output_location: ''  # 无需额外指定输出目录
    azure_static_web_apps_api_token: $(AZURE_STATIC_WEB_APPS_API_TOKEN)

脚本关键说明:

  • UseDotNet@2:确保安装与项目匹配的.NET SDK版本,避免构建失败。
  • DotNetCoreCLI@2:直接将发布产物输出到$(Build.ArtifactStagingDirectory)/wwwroot,zipAfterPublish: false避免打包,让ASWA能直接读取配置文件。
  • AzureStaticWebApp@0:
    • app_location指定应用根目录,必须指向包含staticwebapp.config.json的路径。
    • AZURE_STATIC_WEB_APPS_API_TOKEN需在Azure Pipelines库中添加为变量,值来自ASWA门户的“部署令牌”(在ASWA资源的「概述」页面获取)。

4. 验证部署结果

部署完成后,进入ASWA门户的「配置」->「路由」页面,查看是否自动加载了staticwebapp.config.json中的导航回退规则。若规则已显示,说明配置文件被正确读取,此时测试authentication/login-callback路径,应能正常跳转不再返回404。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:57:08