如何在ASP.NET MVC(.NET Full)的Application Insights中临时停止记录RequestTrackingTelemetryModule

时间:2019-02-15 09:55:56

标签: asp.net-mvc azure-application-insights

我们如何停止在ASP.NET MVC(.NET Full,而不是.NET Core)中记录特定模块,例如RequestTrackingTelemetryModule

我尝试删除

<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web">

ApplicationInsights.config 中,但它抛出了一个奇怪的异常

我正在将Azure Web App用于登台环境和实时环境。所以我只想停止在实时环境中记录请求信息,因为它花费太多。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用ITelemetryProcessor,并遵循此link

添加一个实现ITelemetryProcessor的自定义类:

public class MyTelemetryProcessor : ITelemetryProcessor
{
    private ITelemetryProcessor Next { get; set; }

    public MyTelemetryProcessor(ITelemetryProcessor next)
    {
        this.Next = next;
    }

    public void Process(ITelemetry telemetry)
    {

        RequestTelemetry request = telemetry as RequestTelemetry;

        if (request != null)
        {
            return;
        }

        if (request == null)
        {
            this.Next.Process(telemetry);
        }
    }
}

然后在ApplicationInsights.config中,添加以下内容:

<TelemetryProcessors>
    <Add Type="WebApplicationMVC.MyTelemetryProcessor, WebApplicationMVC">
      <!-- Set public property -->     
    </Add>
  </TelemetryProcessors>

屏幕截图:

enter image description here

它确实从应用洞察数据中过滤了所有请求,测试结果如下:

enter image description here