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

Blazor WebAssembly部署至Azure静态Web应用后登出时出现logout-callback页面404未找到问题

Blazor WebAssembly部署至Azure静态Web应用后登出时出现logout-callback页面404未找到问题

我来帮你排查这个登出后404的问题,结合你提供的信息,大概率是Azure静态Web应用的路由配置或者身份验证回调的设置问题,咱们一步步来梳理:

1. 核心问题:Azure静态Web Apps不识别web.config的路由规则

你本地运行时依赖的web.config里的重写规则,在Azure静态Web Apps环境下是不生效的——Static Web Apps有自己专属的配置文件staticwebapp.config.json来处理路由和静态资源规则。这直接导致/authentication/logout-callback这类SPA路由没有被重定向到index.html,Azure直接返回了404。

解决方案:添加staticwebapp.config.json配置文件

在你的Blazor项目根目录(和Program.cs同级)创建staticwebapp.config.json文件,添加以下内容:

{
  "routes": [
    {
      "route": "/*",
      "serve": "/index.html",
      "statusCode": 200
    }
  ],
  "navigationFallback": {
    "rewrite": "/index.html",
    "exclude": ["/images/*.{png,jpg,gif}", "/css/*", "/js/*", "/_framework/*"]
  }
}

这个配置会让所有非静态资源的请求都回退到index.html,确保Blazor的路由系统能接管/authentication/*这类路径,而不是返回404。

2. 确认Azure AD应用注册的注销回调配置

你已经添加了Redirect URIs,但还要检查前端通道注销URL是否正确配置:

  • 登录Azure门户,找到你的Microsoft Identity平台应用注册
  • 进入「认证」页面,在「前端通道注销URL」处填入你的静态Web应用完整URL加上/authentication/logout-callback,比如:https://xxxxxxxxx.westeurope.4.azurestaticapps.net/authentication/logout-callback
  • 保存设置,确保微软登录服务能正确回调到你的应用完成登出流程

3. 验证Blazor自身的路由配置

你的Authentication.razor页面的路由@page "/authentication/{action}"是正确的,能匹配logout-callback这类动作。同时确认App.razor里的Router组件已经正确引用了应用程序集:

<Router AppAssembly="@typeof(App).Assembly">
    <!-- 其他代码 -->
</Router>

这个配置确保Blazor能找到Authentication.razor组件来处理登出回调请求。

最后测试步骤

  1. 将staticwebapp.config.json添加到项目,并确保它被设置为「复制到输出目录」(右键文件→属性→复制到输出目录:如果较新则复制)
  2. 重新部署你的Blazor应用到Azure静态Web Apps
  3. 测试登出流程,看是否还会出现404问题

备注:内容来源于stack exchange,提问作者Kresten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:42:58