Serilog.Sinks.ApplicationInsights + AddStandardResilienceHandler = ComponentNotRegisteredExceptionC#

Место общения программистов C#
Ответить
Anonymous
 Serilog.Sinks.ApplicationInsights + AddStandardResilienceHandler = ComponentNotRegisteredException

Сообщение Anonymous »

Мой проект использует Serilog и синхронизирует журналы с App Insights через Serilog.Sinks.ApplicationInsights с вызовом Services.AddApplicationInsightsTelemetry(); и такой конфигурацией:

Код: Выделить всё

.UseSerilog((context, services, loggerConfiguration) =>
{
loggerConfiguration
.ReadFrom.Configuration(context.Configuration)
.WriteTo.ApplicationInsights(
services.GetRequiredService(),
TelemetryConverter.Traces);
//.WriteTo.Async(c => c.OpenTelemetry());
});
Это прекрасно работает. Однако, когда я пытаюсь добавить .NET Aspire, приведенный выше код конфигурации не может получить TelemetryConfiguration со следующей ошибкой:
Autofac.Core.Registration.ComponentNotRegisteredException: 'Запрошенная служба 'Microsoft.ApplicationInsights .Extensibility.TelemetryConfiguration' не зарегистрирован
Покопавшись еще немного, ошибка вызвана Проекты ServceDefaults и, в частности:

Код: Выделить всё

builder.Services.ConfigureHttpClientDefaults(http =>
{
http.AddStandardResilienceHandler();
}
Если я закомментирую AddStandardResilienceHandler(), DI внезапно сможет снова найти TelemetryConfiguration. Почему? Как я могу получить и то, и другое?
ОБНОВЛЕНИЕ
Я нашел обходной путь. Если я это сделаю, это сработает

Код: Выделить всё

.WriteTo.ApplicationInsights(
MakeTelemetryConfiguration(builder),
TelemetryConverter.Traces);

private static TelemetryConfiguration MakeTelemetryConfiguration(WebApplicationBuilder builder)
{
var disableAppInsightsTelemetry = string.IsNullOrEmpty(builder.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"]);
if (disableAppInsightsTelemetry)
{
return new TelemetryConfiguration
{
DisableTelemetry = true,
};
}

return new TelemetryConfiguration
{
InstrumentationKey = builder.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"],
};
}
но это неправильно, и я бы предпочел сохранить исходную конфигурацию, если это возможно.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ponentnotr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»