我正在使用 S1 计划将带有故意失败的启动代码的 ASP.NET Core 8 Web API 应用程序部署到 Windows Azure 应用服务。
https 端点确实返回 500.30 指示启动失败。
但 Azure 门户上应用程序服务的状态是“正在运行”,这令人困惑。
我预计它会处于失败状态,而 Azure Functions 确实会发生这种情况。
我的代码/应用程序服务设置/部署中是否有任何内容可以更改状态以反映启动失败?
我通过 Visual Studio 使用以下发布配置文件进行部署:
配置:发布
目标框架:net8.0
部署模式:依赖框架
目标运行时:便携式
示例复制代码:https://github.com/Aleksey-Kudryavtsev/StartupFailureAspNetCore
应用程序服务状态正在运行但启动失败
应用程序服务的状态不是基于代码/抛出的任何异常。
它将基于所使用资源的可用性,而不是异常/启动错误。
从
throw new ApplicationException("Test startup failure");
文件中删除 Program.cs
行。
我的代码/应用程序服务设置/部署中是否有任何内容可以更改状态以反映启动失败?
据我所知,没有这样的方法可以直接更改应用程序的运行状态。
要处理错误,您需要使用
UseExceptionHandler
和 UseStatusCodePages
。
我可以使用下面的代码来处理异常。
感谢@George提供清晰的步骤。
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseStatusCodePages("text/plain", "Exception, status code: {0}");
输出: