除了在 Global 启动中注册 Global ActionFilter 或 ResultFilter 以通过 TelemetryClient 捕获 ModelState 和 Track 请求之外,您没有太多选择(请记住将其声明为静态以避免 TelemetryClient 的多个实例)。要消除内置请求记录的重复请求,您可以在 ApplicationInsights.config 中禁用 RequestTrackingTelemetryModule,如下所示(注释掉)。当然,您现在需要在新的操作过滤器中记录所有请求,除了模型验证错误,因为您现在禁用了内置的。
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer" />
<!--<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web" />-->
</TelemetryModules>
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel" />
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.OperationIdTelemetryInitializer, Microsoft.AI.Web" />
</TelemetryInitializers>
<InstrumentationKey>00001111-2222-3333-4444-555566667777</InstrumentationKey>
</ApplicationInsights>