azure - ASP.NET Core 2.1 应用程序启动失败时在 Application Insights 中创建错误
问题描述
我在我的 ASP.NET Core 2.1 REST 后端中使用 Application Insights,它可以很好地跟踪正常执行期间的错误。但是,当我在应用程序启动期间遇到问题(例如缺少配置)时,进程崩溃并且异常最终出现在显示通用错误页面的 II 中。
我发现我可以通过设置环境变量ASPNETCORE_CAPTURESTARTUPERRORS来控制这种行为,如此处所述,以获得详细的错误页面。
但我希望在应用程序洞察力中跟踪这个详细的错误,并在发生此类错误时最终控制应用程序的可用性设置。
有谁知道如何实现这一目标?
解决方案
更新 0416:添加 op 提供的解决方案:
通过包装CreateWebHostBuilder(args).Build().Run();
在一个try/catch
块中并直接使用发送异常TelemetryClient
。
更新:
对于ASP.NET core 2.1,是可以的(在我这边验证过,注意:这里不用ILogger,它可以自动收集program.cs或startup.cs中未处理的异常)。您可以在 Program.cs 中添加以下代码:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(
builder =>
{
builder.AddApplicationInsights("ikey");
builder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>
(typeof(Program).FullName, LogLevel.Trace);
builder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>
(typeof(Startup).FullName, LogLevel.Trace);
}
);
更多详情,您可以参考这篇文章。
原答案:
不幸的是,log errors during startup
不支持。
这是官方文档,它指出:
有许多异常过滤器无法处理的情况。例如:
1.控制器构造函数抛出的异常。
2.消息处理程序抛出的异常。
3.路由过程中抛出的异常。
4.响应内容序列化过程中抛出的异常。
5.应用程序启动时抛出异常。
6.后台任务抛出异常。
推荐阅读
- json - 在 powershell 中添加子字符串
- node.js - Nodejs Sequelize cli不会改变环境
- php - 设置 cookie 时 Laravel CORS 不起作用
- java - 自定义电容器插件 - 添加 Android 依赖项
- mongodb - 如何在 Docker 中相互通信多个容器?
- python-3.9 - 我想使用 append() 方法使用 for 循环将临时列表附加到空列表
- maven - 调试“org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process null”错误
- python - 如何沿第一维在两个 3D 张量之间执行矩阵乘法?
- text - 表格在乳胶中的页面之外
- url - JsonObjectRequest 请求从 url 获取数据在虚拟而非物理电话上工作