发布后Azure网站遇重定向过多及AzureBlobTraceListener错误求助
嘿,你这碰到了两个关联又独立的问题,咱们一步步拆解解决:
本地调试正常、部署到Azure后出循环重定向,结合你用O365身份验证的场景,大概率是HTTPS配置、身份验证回调路径、或者授权规则出了问题,给你几个排查方向:
检查O365应用注册的回调URL
确保你在Azure AD(O365)里注册的应用回调URL是HTTPS协议的(比如https://mysite.azurewebsites.net/signin-oidc,具体路径要看你用的身份验证中间件),和代码里配置的回调路径完全一致。Azure App Service默认强制HTTPS,如果你回调URL还是HTTP,就会触发循环跳转。强制全站HTTPS
给你的应用加上HTTPS重定向规则,避免HTTP请求引发的跳转问题:- 如果是ASP.NET Core,在
Program.cs里添加:app.UseHttpsRedirection(); - 如果是ASP.NET Framework,在
web.config里加URL重写规则:<system.webServer> <rewrite> <rules> <rule name="Force HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer>
- 如果是ASP.NET Core,在
确保登录/回调/错误页面允许匿名访问
循环重定向很常见的原因是:未授权请求被重定向到登录页,但登录页(或者OIDC回调路径、Error页面)又被设置为需要授权,导致无限循环。- 给OIDC的回调路径(比如
/signin-oidc)加上[AllowAnonymous] - 你的
Error.cshtml对应的Action(或者直接访问这个视图的路径)也要允许匿名,比如在对应的Controller里加:[AllowAnonymous] public ActionResult Error() { return View(); }
- 给OIDC的回调路径(比如
这个是Azure App Service默认启用的诊断跟踪组件,它会尝试把应用日志写到Azure Blob存储,但你没配置对应的SAS URL,所以抛出错误。如果你不需要这个功能,直接关掉就行:
方法一:在Azure Portal里关闭诊断规则
进入你的App Service → 左侧菜单「监控」→「诊断设置」,找到所有启用了「Blob存储」的诊断配置,直接删除它们(或者如果以后需要日志,再配置你的存储账户)。方法二:在代码里强制移除跟踪器
如果Portal的设置没生效,在web.config里添加以下配置,直接移除这个跟踪监听器:<system.diagnostics> <trace> <listeners> <remove name="AzureBlobTraceListener" /> </listeners> </trace> </system.diagnostics>方法三:ASP.NET Core自定义日志提供者
如果是ASP.NET Core项目,直接在Program.cs里清理默认日志提供者,只保留你需要的(比如控制台、调试日志):builder.Logging.ClearProviders(); builder.Logging.AddConsole(); builder.Logging.AddDebug();
先按这个顺序排查,应该能解决你的两个问题。如果重定向的问题还没搞定,可以看看F12里的重定向链条,确认是在哪些URL之间循环,再针对性调整授权规则~
内容的提问来源于stack exchange,提问作者Bassie

