需要防止应用程序见解在 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() 的任何代码路径。有什么指示吗?

需要防止应用程序见解在 Web 应用中调试时初始化

据我所知,阻止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;
  • 工具 ->选项... ->调试 ->
  • 常规 ->选中"仅启用我的代码"