Как я могу предоставить конфигурацию по умолчанию для всех служб Aspire?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу предоставить конфигурацию по умолчанию для всех служб Aspire?

Сообщение Anonymous »

Я хочу предоставить набор настроек по умолчанию для всех моих сервисов. Этими значениями по умолчанию должен управлять AppHost или другая общая сборка.
Итак, вот соответствующие фрагменты кода:
AppHost/appsettings.json:< /p>

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

{
"AppConfig": {
"One": "First Default",
"Two": "Second Default"
}
}
ApiService/appsettings.json (два пропущено и должно быть получено из конфигурации AppHost по умолчанию):

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

{
"AppConfig": {
"One": "First is Overridden"
}
}
Я добавил класс poco для десериализации в проект ServiceDefaults:

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

public class AppConfig
{
public string? One { get; set; }
public string? Two { get; set; }
}
Это общий код для добавления класса AppConfig в IServiceCollection в ServiceDefaults/Extensions.cs:

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

public static TBuilder AddCustomConfiguration(this TBuilder builder) where TBuilder : IHostApplicationBuilder
{
builder.Services.AddSingleton(x => x.GetRequiredService().GetSection("AppConfig").Get() ?? throw new InvalidOperationException("AppConfig needs to be configured"));

return builder;
}
Здесь он используется в ApiService/Program.cs:

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

// ...
var builder = WebApplication.CreateBuilder(args);

// Add Custom Config:
builder.AddCustomConfiguration();

builder.Services.AddHostedService();
// ...
Вот как я получаю информацию из инжектора зависимостей в ApiService/SampleService.cs:

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

public class SampleService(AppConfig appConfig, ILogger logger) : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
logger.LogInformation("AppConfig.One: {One}", appConfig.One);
logger.LogInformation("AppConfig.Two: {Two}", appConfig.Two);

return Task.CompletedTask;
}
}
Вывод:
Изображение

"Два" равно нулю. Я хочу настроить значения по умолчанию в AppHost/appsettings.json.
Каков правильный подход к конфигурациям «по умолчанию» в .NET Aspire?
Я создал образец приложения: https://github.com/Lyra1337/net-aspire- ... figuration

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-services
Ответить

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

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

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

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

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