ASP.NET Core 2.1 应用程序启动失败时在 Application Insights 中创建错误

Create Error in Application Insights when Startup of ASP.NET Core 2.1 Application fails

我在 ASP.NET Core 2.1 REST 后端中使用 Application Insights,它可以很好地跟踪正常执行期间的错误。 但是,当我在应用程序启动期间遇到问题(例如缺少配置)时,进程崩溃并且异常最终出现在 IIs 中,显示一般错误页面。

我发现我可以通过设置环境变量 ASPNETCORE_CAPTURESTARTUPERRORS 来控制此行为 here 以获得详细的错误页面。

但我希望在应用程序洞察中跟踪此详细错误,并在发生此类错误时最终控制应用程序的可用性设置。

有人知道如何实现吗?

更新0416:添加op提供的解决方案:

通过将 CreateWebHostBuilder(args).Build().Run(); 包装在 try/catch 块中并使用 TelemetryClient.

直接发送异常

更新:

对于ASP.NET core 2.1,是可以的(在我这边验证过,注意:这里不需要使用ILogger,它可以自动收集program.cs或[=59中未处理的异常=]).您可以在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);
            }
        );

更详细的可以参考这篇article.


原回答:

很遗憾,log errors during startup 不受支持。

这是 official doc,它指出:

有许多情况是异常过滤器无法处理的。例如:

1.Exceptions 从控制器构造函数中抛出。

2.Exceptions 从消息处理程序中抛出。

3.Exceptions 在路由期间抛出。

4.Exceptions 在响应内容序列化期间抛出。

5.应用程序启动时抛出异常。

6.Exception 抛出后台任务。