处于调试模式时的 Application Insights

jgi*_*l09 6 c# azure azure-application-insights visual-studio-2015

我刚刚在 MVC 应用程序中启用了 Application Insights,并注意到在本地调试时,跟踪信息会在我的 Azure Application Insight 中捕获。

处于调试模式时,我想阻止应用程序在 Azure Application Insight 中记录事件,但仍会在 Visual Studio 的“诊断工具”>“事件”窗口中显示事件和日志记录信息。

我已尝试以下操作,虽然这会阻止在我的 Azure AI 中捕获事件,但 Visual Studio 不再在“事件”窗口中显示调试信息。

 protected void Application_Start()
 {
        #if DEBUG
        TelemetryConfiguration.Active.DisableTelemetry = true;
        #endif
 }
Run Code Online (Sandbox Code Playgroud)

我上网寻找答案无济于事。希望有人能帮忙。

Jam*_*SFT 6

最便宜的方法是将您的 Instrumentation Key 设置为全 0。没有 NULL iKey,因此它实际上只会删除消息。

00000000-0000-0000-0000-000000000000
Run Code Online (Sandbox Code Playgroud)

如果您想使用,Application_Start()可以使用指令#DEBUG或使用System.Diagnostics.Debugger.IsAttached属性来完成此操作。然而这种方法并不完全可靠。您可以尝试,但您的体验可能不一致。

如果您有时间,您应该制作一个TelemetryInitializer,它将根据调试器是否连接来更改 Instrumentation Key。这将确保只有当您处于调试会话中时才会发生这种情况。这样,如果您不小心将调试版本发布到生产环境,您将不会丢失遥测数据。

public class CustomeWebRequestTelemetryModule :  Microsoft.ApplicationInsights.Extensibility.ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        if (telemetry != null && System.Diagnostics.Debugger.IsAttached)
        {
            telemetry.Context.InstrumentationKey = "00000000-0000-0000-0000-000000000000";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)