.NET Core Azure Web App无限重定向报错,如何解读日志排查根因
排查思路
- 优先确认登录页触发的具体异常
你当前只采集了HTTP访问日志,无法看到应用内部的报错信息,请执行以下命令拉取应用运行时日志,定位访问/Identity/Account/Login路径时抛出的异常内容:
az webapp log tail --name example-app-service-rollbase --resource-group example-resources --provider application
从现有现象可判断:访问登录页时触发了未捕获的异常,触发ASP.NET Core默认异常跳转逻辑,请求被转发到/Home/Error路径。
- 检查错误页的授权配置
重定向循环的核心原因是/Home/Error路径被设置了登录权限校验:异常跳转至错误页后,错误页要求用户登录,因此再次跳转到登录页,同时把错误页地址作为ReturnUrl参数拼接,反复触发循环。请检查以下配置:
HomeController下的ErrorAction是否加了[Authorize]属性- 全局授权过滤器是否排除了
/Home/Error路径的权限校验 - 是否有自定义的中间件对所有请求做了登录状态校验,未排除错误页路径
- 检查反向代理头配置
Azure App Service使用ARR作为反向代理接收用户请求,再转发到应用进程,如果你的代码未配置反向代理头信任,会导致应用无法识别请求的HTTPS状态、域名等信息,触发异常跳转。请确认Program.cs(.NET 6+)或Startup.cs(.NET Core 3.1)中存在以下配置,且配置顺序在UseAuthentication、UseAuthorization之前:
// 注入转发头配置 builder.Services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.All; // 信任Azure反向代理的所有转发请求,非生产环境可临时加这个配置验证 options.KnownProxies.Clear(); options.KnownNetworks.Clear(); }); // 中间件管道开头位置添加转发头处理 app.UseForwardedHeaders();
- 检查Identity Cookie配置
确认Identity相关的Cookie配置没有硬编码本地环境的参数:
- Cookie的
Domain属性是否写死了本地localhost值,部署到Azure后无法写入Cookie,导致始终识别为未登录状态 - Cookie的
SecurePolicy是否配置为SecurePolicy.Always(Azure环境必须开启HTTPS Cookie) - SameSite配置是否符合浏览器当前的安全策略
快速验证方案
你可以先给/Home/Error的Action添加[AllowAnonymous]属性,重新部署后访问服务,就会跳出重定向循环,直接显示错误页的报错内容,根据具体报错信息可以快速定位根因。
常见触发原因
你提到没有修改代码和部署配置,大概率是Azure平台侧的.NET运行时补丁版本自动更新,导致之前兼容的逻辑出现变更:比如反向代理头的校验逻辑变严、授权过滤器的优先级调整、或者Identity的默认配置变更。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

