Я пытаюсь интегрировать информацию о приложении в приложение .net core MVC.Все работало как ожидалось, пока я не добавил инициализатор телеметрии для чтения содержимого тела запроса.Я создал ITelemetryInitializer, который считывает содержимое из тела запроса, если тип телеметрии - это телеметрия запроса.Но я получаю «System.ObjectDisposedException:« Не удается получить доступ к удаленному объекту. »»
Проблема:
При отладке я заметил, что когда выполняется HTTP-вызов POST / PUT, действие MVCМетод вызывается перед методом Initialize ().Таким образом, к тому моменту, когда вызывается метод Initialize (), поток запроса тела запроса уже удаляется.У меня есть аналогичная реализация для приложения 4.6 API веб-фреймворка, но она прекрасно работает без этой проблемы.
Есть ли способ вызвать инициализаторы до выполнения действия MVC.Я попытался настроить понимание приложения с помощью IWebHostBuilder и IServiceCollection.
Кто-нибудь сталкивался с этой проблемой?
Версия Info SDK Версия: 2.2.1 .NET Версия: .Net core 2.0 Как приложение было загружено сSDK (VisualStudio / StatusMonitor / расширение Azure): ОС: информация о хостинге (IIS / Azure WebApps / и т. Д.): IIS
Обновление (скопированный код из комментария) :
if (!(telemetry is RequestTelemetry requestTelemetry))
return;
var request = _httpContextAccessor.HttpContext?.Request;
if (request == null)
return;
if (request.Body.CanRead)
{
request.EnableRewind();
using (var memoryStream = new MemoryStream())
{
request.Body.CopyTo(memoryStream);
request.Body.Position = 0; //add to telemetry properties
}
}