我有一个MVC web应用程序。它在调试配置中运行时,在Application_Start()期间有条件地初始化数据库中的测试数据。这种初始化非常慢,显然是由于一位开发人员为项目添加了应用程序洞察力。您知道,每次通过实体框架保存到DB时,我们都会在调用堆栈上单击以下命令:
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停止做任何web请求。最好,它在调试中什么也不做,但只要它执行得好,我就不介意。我试过设置:
TelemetryConfiguration.Active.DisableTelemetry = true;但这显然不会影响代码页调用TelemetryClient.Initialize()的内容。有什么指示吗?
发布于 2016-07-07 23:35:35
我所知道的阻止AI运行的最好方法是使用web.config变换作为调试配置来删除它。这将确保它不注册任何网络请求。
含量( 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>发布于 2021-10-26 06:35:20
在附加调试器时,我观察到了Application内部代码的缓慢性。
它是由抛出大量HttpContext.Request异常引起的(这些异常随后会被处理,因此除了缓慢性之外,它们不会引起任何其他问题)。
每一个都对我有帮助:
https://stackoverflow.com/questions/38256407
复制相似问题