У меня есть проект C # webapi, который взаимодействует как клиент-сигнализатор с другим приложением. Периодически он выдает это исключение, которое вызывает его сбой. Я могу воспроизвести исключение, выполнив на нем некоторые нагрузочные тесты, но, несмотря на поиск высокого и низкого уровня, я не могу точно определить, где происходит это исключение, и предотвратить его.
System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonationContext)
at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext)
at System.Web.HttpApplication.System.Web.Util.ISyncContext.Enter()
at System.Web.Util.SynchronizationHelper.SafeWrapCallback(Action action)
at System.Web.Util.SynchronizationHelper.<>c__DisplayClass22_0.<QueueAsynchronous>b__0(Task _)
at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonationContext)
at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext)
at System.Web.HttpApplication.System.Web.Util.ISyncContext.Enter()
at System.Web.Util.SynchronizationHelper.SafeWrapCallback(Action action)
at System.Web.Util.SynchronizationHelper.<>c__DisplayClass22_0.<QueueAsynchronous>b__0(Task _)
at System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke()
at System.Threading.Tasks.Task.Execute()<---
Мое приложение - .net 4.7, а концентратор сигналов работает на .net 4.7. Я почти уверен, что сервер не задействован. Если я перезапускаю клиент, он начинает с того места, где остановился, и продолжает работать.
В клиенте webapi есть несколько асинхронных методов, и я подтвердил, что все внутренние вызовы ожидаются, и у них всех есть обработчики исключений. Конечные точки webapi также помечены как асинхронные.
Я провел несколько дней, пытаясь разобраться в этом исключении. Любые советы будут с благодарностью приняты! Рад разработать с дополнительной информацией по мере необходимости.