C# Application Insights遥测处理器未捕获异常

C# Application Insights遥测处理器未捕获异常,c#,.net-core,azure-application-insights,telemetry,C#,.net Core,Azure Application Insights,Telemetry,我有一个自定义遥测处理器,它向Application Insights发送自定义异常字段 例如,如果我抛出这样的自定义异常 类MyException:异常 { 公共字符串附加数据{get;set;} } 然后它将附加数据作为自定义应用程序洞察字段发送 公共类CustomExceptionDataTelemetryProcessor:ITelemetryProcessor { /// ///应忽略的默认异常字段,因为默认情况下它们是日志的一部分 /// 私有静态IEnumerable\u D

我有一个自定义遥测处理器,它向Application Insights发送自定义异常字段

例如,如果我抛出这样的自定义异常

类MyException:异常
{
公共字符串附加数据{get;set;}
}
然后它将
附加数据
作为自定义应用程序洞察字段发送

公共类CustomExceptionDataTelemetryProcessor:ITelemetryProcessor
{
/// 
///应忽略的默认异常字段,因为默认情况下它们是日志的一部分
/// 
私有静态IEnumerable\u DefaultExceptionFields=new Exception().GetType().GetProperties().Select(e=>e.Name);
私有只读ITelemetryProcessor\u next;
公共自定义例外数据遥测处理器(ITelemetryProcessor next)
{
_下一个=下一个;
}
公共作废流程(ITelemetry项)
{
修改项目(项目);
_下一步:过程(项目);
}
/// 
///将异常字段添加为自定义数据
/// 
私有无效修改项(ITelemetry项)
{
如果(!(项目为异常元素测量异常元素))
{
返回;
}
var exception=exceptionTelementry.exception;
var exceptionType=exception.GetType();
foreach(exceptionType.GetProperties()中的var属性)
{
//忽略默认字段
if(_DefaultExceptionFields.Contains(property.Name))
{
继续;
}
var value=property.GetValue(异常);
var serializedValue=(值为字符串)?value.ToString():HttpClientUtils.Serialize(值);
ExceptionElementry.Properties[property.Name]=serializedValue;
}
}
}
我这样注册这个处理器

var telemetryBuilder=TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
telemetryBuilder.Use((下一步)=>新的CustomExceptionDataTelemetryProcessor(下一步));
telemetryBuilder.Build();
使用Microsoft.ApplicationInsights.AspNetCore版本,一切都正常

如果我升级到最新版本,它仍然可以正常工作,但我收到一条警告,注册码已弃用,因此我根据

services.AddApplicationInsightsTelemetryProcessor();
但现在处理器不再“捕获”异常。只有
RequestTelemetry
dependencytemetry
类型的项。没有类型为
的项目,电测法除外

我可以用旧的方式进行注册,但我认为这可能是某种不太正确的迹象,可能会在其他地方引发其他问题

在注册我自己的之前,我试图删除所有的初始值设定项和处理器,但没有帮助。其他的东西可能正在过滤掉异常

services.RemoveAll(typeof(ITelemetryInitializer));
RemoveAll(typeof(ITelemetryProcessor));
它与Microsoft.ApplicationInsights.AspNetCore的版本配合使用


我还安装了另一个版本的
Microsoft.ApplicationInsights
NuGet软件包。删除它并仅保留Microsoft.ApplicationInsights.AspNetCore

您是否尝试过调试以查看是否发生错误,您的自定义处理器当时是否已执行?我进行了调试,处理器未执行。找到了解决方案并发布为答案,这很奇怪。它在我这边可以很好地工作。您可以在visual studio中创建一个新项目来测试它吗?根据您的问题,2.15.0版的注册码发生了更改,如何?2.15.0版不适用于我,但我的代码可能有问题。它与2.13.1配合得很好,这对我来说已经足够了。是的,没错。再次测试1。在我的代码2中引发了一个异常。将断点添加到遥测处理器3中。在版本2.13.1中,断点达到4。将包升级到2.15.0(这是我在项目中所做的唯一更改)。断点不再命中我创建了一个新的ASP.NET核心项目并集成了遥测处理器。它适用于2.15.0版。因此,这实际上不是一个问题,这是与我的项目中的其他软件包不匹配的一种情况。感谢您花时间做这项研究!