ASP.NET 核心在工作时会读取多少次 appsettings.json 文件?

How many time appsettings.json file will be read by ASP.NET Core when its working?

阅读 关于从 appsettings.json 文件中读取应用程序设置和配置后,我有点困惑 appsettings.json 将被读取多少次?

这是 The Startup class 当应用程序开始工作时第一次阅读它(我想,如果我错了请纠正我)。

public class Startup
{  
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }
 ...

在控制器上:

public class HomeController : Controller
{
   private readonly IConfiguration _config;
   public HomeController(IConfiguration config)
    {
        _config = config;
    }
  ...

问题是 appsettings.json 会在开始时读取一次 class 还是每次我们使用 HomeController 时都会读取?

因为它是一个文件,我要询问硬盘上物理文件的读取计数。

视情况而定。 JSON 文件将在启动时填充 IConfiguration.

时读取一次

但是,如果配置设置为在更改时刷新,那么如果在运行时对文件进行了更改,它将被重新读取。

每次注入 IConfiguration 时,不会重新读取 JSON 文件。

引用Configuration in ASP.NET Core

话虽如此。理想情况下,您不应该到处注入 IConfiguration。它有时被视为一种代码味道。 Options 模式通常是建议的方法

引用Options pattern in ASP.NET Core

文档中的这个特定位置应该很有趣,因为它关注在设置配置时框架自动调用 AddJsonFile 的次数

JSON Configuration Provider