首页 > 解决方案 > 未处理的异常未登录 appinsights

问题描述

我在 asp.net aspx 中有一个网站。我有一个 HTTP 处理程序。如果有任何未处理的异常,HTTP 处理程序中的 application_error 函数会捕获它。然后它也转到 global.ascx 中的 Application_Error。

我已设置 applicationInsights.config 以将所有异常记录到 Azure App 见解中。我想要的是,一些特定的异常,如 maxURLsize,不应该记录在我的 Azure 应用洞察中。

我尝试了下面的东西,但它不起作用。1. HttpContext.Current.Server.ClearError(); 在 Application_Error 函数 2. System.Diagnostics.Debug.Assert(false); 在 Http 处理程序中的 application_Error 事件中。

标签: asp.netazureazure-application-insights

解决方案


您可以使用ITelemetryProcessor

如果您知道异常名称,例如maxURLsize,那么在您的自定义遥测处理器类中,您可以使用下面的代码(您也可以根据需要组合其他属性):

    public class MyErrorFilter: ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }
        public MyErrorFilter(ITelemetryProcessor next)
        {
            this.Next = next;
        }
        public void Process(ITelemetry item)
        {           

            var exceptions = item as ExceptionTelemetry;

            if (exceptions != null && (exceptions.Exception.GetType().Name.ToLower() == "maxURLsize".ToLower()))
            {                
                return;
            }

            this.Next.Process(item);
        }
    }

然后按照上面提到的文档注册它。


推荐阅读