【发布时间】:2019-01-07 13:54:17
【问题描述】:
我对使用应用程序洞察力进行检测并不陌生。我只是创建简单的 asp.net 核心 web api 项目并设置应用程序洞察力以进行检测。当控制器被调用方法(GET)时,我注意到它会自动捕获应用程序洞察力,而无需任何代码。它是怎么发生的?
【问题讨论】:
标签: azure asp.net-core-webapi azure-application-insights
我对使用应用程序洞察力进行检测并不陌生。我只是创建简单的 asp.net 核心 web api 项目并设置应用程序洞察力以进行检测。当控制器被调用方法(GET)时,我注意到它会自动捕获应用程序洞察力,而无需任何代码。它是怎么发生的?
【问题讨论】:
标签: azure asp.net-core-webapi azure-application-insights
如果您的问题是关于“Application Insights 如何捕获有关应用程序传入请求的信息”,那么它基于 DiagnosticSource 事件。 Asp.Net Core 托管环境发布 Application Insights 订阅的 DiagnosticSource 事件,并从中创建 RequestTelemetry。
下面显示了正在侦听的事件的确切名称:
https://github.com/Microsoft/ApplicationInsights-aspnetcore/blob/develop/src/Microsoft.ApplicationInsights.AspNetCore/DiagnosticListeners/Implementation/HostingDiagnosticListener.cs#L68
注意:在 SDK 的旧版本中,请求监控是通过“RequestTrackingMiddleWare”完成的,现在已过时。
附加信息 - 侦听 DiagnosticSource 事件的类似方法也用于监视依赖项(http、sql)。
【讨论】:
如果您使用 Visual Studio 添加 Application Insight,它将自动在您的 CreateWebHostBuilder 方法中添加 .UseApplicationInsights():
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights()
.UseStartup<Startup>();
这会将 Application Insight 添加到执行日志记录的应用程序管道(中间件)。
进一步阅读: ASP.NET Core Middleware
【讨论】: