Почему Host.CreateApplicationBuilder из ASP.NET Core не находит appsettings.json?

Cоздаю приложение с помощью ASP.NET Core 7. Но не могу понять, почему я не могу получить значения из appsettings.json? loggingEnv почему-то пустой. Хотя документация говорит, что appsettings.json загружается автоматически из текущей директории.

appsettings.json находится в той же директории, что и Program.cs. Пробовал еще переносить appsettings.json в /Properties, но тоже не помогает.

Если при запуске кода поставить брейкпоинт, то builder.Environment.ContentRootPath будет равен ...ProjectFolder\bin\Debug\net7.0, но разве так должно быть? Разве он не должен быть просто ...ProjectFolder?

Program.cs

var builder = Host.CreateApplicationBuilder();

var loggingEnv = builder.Configuration.GetSection("Logging").GetChildren();

var app = builder.Build();

app.Run();

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    },
    "File": {
      "Path": "Temp/app.log",
      "Append": true,
      "MinLevel": "Information",
      "FileSizeLimitBytes": 0,
      "MaxRollingFiles": 1
    }
  }
}

Ответы (2 шт):

Автор решения: Danila

Можно использовать (using Microsoft.Extensions.Configuration):

var builder = new ConfigurationBuilder()
                 .AddJsonFile($"appsettings.json", true, true);

Также можно использовать (using System.Text.Json.Serialization):

 builder.Services.AddControllers()
                .AddJsonOptions(o => o.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles);

Привел пример для ASP.NET Core и Console App.

→ Ссылка
Автор решения: sln

Проблема в builder.Environment.ContentRootPath. Он ...ProjectFolder\bin\Debug\net7.0 вместо ...ProjectFolder. Сейчас просто задал директорию вот так:

var builder = Host.CreateApplicationBuilder();

var projectPath = Directory.GetParent(Directory.GetCurrentDirectory())?.Parent?.Parent?.FullName;
ArgumentNullException.ThrowIfNull(projectPath);

builder.Configuration.SetBasePath(projectPath);
builder.Configuration.AddJsonFile("Properties/appsettings.json", true, true);

var app = builder.Build();

app.Run();

Но странно почему пришлось это делать, потому что есть другой проект, в котором всё работает без этого (работает как в вопросе).

→ Ссылка