需要防止应用程序见解在 Web 应用中调试时初始化
本文关键字:应用 Web 调试 初始化 应用程序 | 更新日期: 2023-09-27 17:56:01
我有一个MVC Web应用程序。它在调试配置中运行时,在 Application_Start() 期间有条件地初始化数据库中的测试数据。这种初始化非常慢,这显然要归功于一位开发人员同事向项目添加了应用程序见解跟踪。您会看到,每次我们通过实体框架保存到数据库时,我们现在都会在调用堆栈上点击以下内容:
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()!!不开玩笑,这会很慢。我们在数据填充期间进行了大量保存。当然,这里有一些优化,但这是一个毛茸茸的混乱球,我没有写,宁愿避免裂开。
基本上,我希望应用程序见解停止执行任何Web请求。最好,它在调试中什么都不做,但只要它表现良好,我不介意。我试过设置:
TelemetryConfiguration.Active.DisableTelemetry = true;
但这显然不会影响调用 TelemetryClient.Initialize() 的任何代码路径。有什么指示吗?
据我所知,阻止AI运行的最好方法是使用调试配置的web.config转换来删除它。这将确保它不会注册任何 Web 请求。
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>
我观察到附加调试器时应用程序见解内部代码的速度很慢。
它是由围绕 HttpContext.Request 抛出大量异常引起的(然后处理了这些异常,因此除了速度慢之外,它们没有引起任何其他问题)。
这些都对我有帮助:
- 在某个地方早点调用它:遥测配置.活动.禁用遥测 = true; 工具 ->选项... ->调试 ->
- 常规 ->选中"仅启用我的代码"