在 Web 应用程序中进行调试时需要阻止 Application Insights 初始化
Need to prevent Application Insights from initializing when in debug in a web app
我有一个 MVC 网络应用程序。它在 Application_Start() 期间有条件地初始化数据库中的测试数据,而在调试配置中 运行。显然,由于一位开发人员向项目添加了应用程序洞察力跟踪,此初始化速度非常慢。你看,每次我们通过 entity framework 保存到数据库时,我们现在在调用堆栈上点击以下内容:
System.Web.dll!System.Web.HttpContext.Request.get()
Microsoft.AI.Web.dll!Microsoft.ApplicationInsights.Web.Implementation.HttpContextExtensions.GetRequest(System.Web.HttpContext context)
Microsoft.AI.Web.dll!Microsoft.ApplicationInsights.Web.Implementation.WebTelemetryInitializerBase.Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
Microsoft.ApplicationInsights.dll!Microsoft.ApplicationInsights.TelemetryClient.Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
HttpContext.Request.Get()!!!别开玩笑,这会很慢。我们在数据填充期间进行了大量保存。当然,这里有一些优化,但这是一个毛茸茸的乱七八糟的东西,我没有写,宁愿避免破解。
基本上,我希望 Application Insights 停止执行任何 Web 请求。最好,它在调试时什么都不做,但只要它表现良好,我不介意。我试过设置:
TelemetryConfiguration.Active.DisableTelemetry = true;
但这显然不会影响调用 TelemetryClient.Initialize() 的任何代码路径。有什么指点吗?
据我所知,从 运行 停止 AI 的最佳方法是使用 web.config transform 作为调试配置以将其删除。这将确保它不会注册任何网络请求。
Web.Debug.config
的内容
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add xdt:Transform="Remove" xdt:Locator="Match(name)" name="ApplicationInsightsWebTracking" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<add xdt:Transform="Remove" xdt:Locator="Match(name)" name="ApplicationInsightsWebTracking" />
</modules>
</system.webServer>
</configuration>
我发现附加调试器后 Application Insights 内部代码运行缓慢。
这是由于在 HttpContext.Request 周围引发了很多异常(然后进行了处理,因此除了速度慢之外没有引起任何其他问题)。
这些都对我有帮助:
- 尽早在某个地方调用它:TelemetryConfiguration.Active.DisableTelemetry = true;
- 工具 -> 选项... -> 调试 -> 常规 -> 选中“仅启用我的代码”
我有一个 MVC 网络应用程序。它在 Application_Start() 期间有条件地初始化数据库中的测试数据,而在调试配置中 运行。显然,由于一位开发人员向项目添加了应用程序洞察力跟踪,此初始化速度非常慢。你看,每次我们通过 entity framework 保存到数据库时,我们现在在调用堆栈上点击以下内容:
System.Web.dll!System.Web.HttpContext.Request.get()
Microsoft.AI.Web.dll!Microsoft.ApplicationInsights.Web.Implementation.HttpContextExtensions.GetRequest(System.Web.HttpContext context)
Microsoft.AI.Web.dll!Microsoft.ApplicationInsights.Web.Implementation.WebTelemetryInitializerBase.Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
Microsoft.ApplicationInsights.dll!Microsoft.ApplicationInsights.TelemetryClient.Initialize(Microsoft.ApplicationInsights.Channel.ITelemetry telemetry)
HttpContext.Request.Get()!!!别开玩笑,这会很慢。我们在数据填充期间进行了大量保存。当然,这里有一些优化,但这是一个毛茸茸的乱七八糟的东西,我没有写,宁愿避免破解。
基本上,我希望 Application Insights 停止执行任何 Web 请求。最好,它在调试时什么都不做,但只要它表现良好,我不介意。我试过设置:
TelemetryConfiguration.Active.DisableTelemetry = true;
但这显然不会影响调用 TelemetryClient.Initialize() 的任何代码路径。有什么指点吗?
据我所知,从 运行 停止 AI 的最佳方法是使用 web.config transform 作为调试配置以将其删除。这将确保它不会注册任何网络请求。
Web.Debug.config
的内容<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add xdt:Transform="Remove" xdt:Locator="Match(name)" name="ApplicationInsightsWebTracking" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<add xdt:Transform="Remove" xdt:Locator="Match(name)" name="ApplicationInsightsWebTracking" />
</modules>
</system.webServer>
</configuration>
我发现附加调试器后 Application Insights 内部代码运行缓慢。
这是由于在 HttpContext.Request 周围引发了很多异常(然后进行了处理,因此除了速度慢之外没有引起任何其他问题)。
这些都对我有帮助:
- 尽早在某个地方调用它:TelemetryConfiguration.Active.DisableTelemetry = true;
- 工具 -> 选项... -> 调试 -> 常规 -> 选中“仅启用我的代码”