在Azure App Service托管的.NET Framework 4.7.2 ASP.NET应用中,如何通过代码启用Application Insights的EnableSqlCommandTextInstrumentation
启用Application Insights SQL命令文本跟踪(代码方式,.NET Framework 4.7.2)
对于你的ASP.NET Framework 4.7.2应用,既然是通过代码配置Application Insights,要开启完整SQL命令文本记录,你需要手动定位或创建DependencyTrackingTelemetryModule实例,并显式设置它的EnableSqlCommandTextInstrumentation属性为true。具体操作如下:
先确认已安装
Microsoft.ApplicationInsights.DependencyCollectorNuGet包(如果还没安装的话,通过NuGet包管理器添加即可)。在应用启动的配置代码中(比如
Global.asax的Application_Start方法里),添加以下逻辑:
// 从现有配置中查找DependencyTrackingTelemetryModule实例 var dependencyModule = TelemetryConfiguration.Active.TelemetryModules .OfType<DependencyTrackingTelemetryModule>() .FirstOrDefault(); // 如果实例不存在,就创建一个并添加到配置中 if (dependencyModule == null) { dependencyModule = new DependencyTrackingTelemetryModule(); TelemetryConfiguration.Active.TelemetryModules.Add(dependencyModule); } // 启用SQL命令文本的跟踪记录 dependencyModule.EnableSqlCommandTextInstrumentation = true; // 保留你原有的Application Insights基础配置 TelemetryConfiguration.Active.DisableTelemetry = false; TelemetryConfiguration.Active.InstrumentationKey = setting.ApplicationInsightsInstrumentationKey;
- 关键细节说明:
DependencyTrackingTelemetryModule是Application Insights负责收集依赖项(包括SQL调用)数据的核心模块,EnableSqlCommandTextInstrumentation就是控制是否记录完整SQL命令文本的开关。- 由于你采用纯代码配置的方式,无法读取
applicationInsights.config中的设置,所以必须通过代码显式开启这个属性才能生效。 - 确保这段配置代码在应用启动初期执行,这样才能在整个应用生命周期内持续生效。
你提到Web应用的相关基础配置已正确启用,那只要加上这段代码,就能实现完整SQL日志的记录了。
内容的提问来源于stack exchange,提问作者Christoph Fink
相关产品推荐
相关产品推荐

