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组件来处理登出回调请求。
最后测试步骤
- 将
staticwebapp.config.json添加到项目,并确保它被设置为「复制到输出目录」(右键文件→属性→复制到输出目录:如果较新则复制) - 重新部署你的Blazor应用到Azure静态Web Apps
- 测试登出流程,看是否还会出现404问题
备注:内容来源于stack exchange,提问作者Kresten
相关产品推荐
相关产品推荐

