Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET 5:如何在更改时重新加载强类型配置_C#_Asp.net_Json_Configuration_Configuration Files - Fatal编程技术网

C# ASP.NET 5:如何在更改时重新加载强类型配置

C# ASP.NET 5:如何在更改时重新加载强类型配置,c#,asp.net,json,configuration,configuration-files,C#,Asp.net,Json,Configuration,Configuration Files,我已经能够在ASP.NET5中设置强类型配置,它工作得非常好。我还将配置设置为在.json配置文件更改时自动重新加载。但这似乎只有在我使用非类型化配置时才起作用。当.json文件更改时,强类型配置类仍然保留旧值 我正在设置如下配置: 把它装订成这样: public void ConfigureServices(IServiceCollection services) { /* ... (unrelated stuff edited away) ... */ services.A

我已经能够在ASP.NET5中设置强类型配置,它工作得非常好。我还将配置设置为在
.json
配置文件更改时自动重新加载。但这似乎只有在我使用非类型化配置时才起作用。当
.json
文件更改时,强类型配置类仍然保留旧值

我正在设置如下配置:

把它装订成这样:

public void ConfigureServices(IServiceCollection services)
{
    /* ... (unrelated stuff edited away) ... */
    services.AddOptions();
    services.AddInstance(Configuration);
    services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
    services.Configure<DbSettings>(Configuration.GetSection("DbSettings"));
    /* ... (unrelated stuff edited away) ... */
}
(我有一个类似这样的C类:)

当我通过依赖项注入获取
IOptions
时,当我更改
config.json
config.Dev.json
文件时,它不会改变。我必须重新启动整个web应用程序才能更新配置类。但是如果我改为使用非类型化的
IConfiguration
实例,它会在我更改json文件时自动更改


所以问题是:当我更改.json文件时,如何更改强类型配置,而不必重新启动webapp?

当调用
configuration.GetSection()
时,它将在启动时传入该部分一次

要在运行时更新
AppSettings
选项,必须将
AppSettings
选项绑定到配置部分

services.Configure<AppSettings>(option => Configuration.GetSection("AppSettings").Bind(option));
services.Configure(选项=>Configuration.GetSection(“AppSettings”).Bind(选项));

在asp.net core 1.1上,您曾经克服过这个限制吗?是否可以强制services.configure加载文件更改?
{
    "AppSettings": {
        "This": "that",
        "Foo": "bar"
        /* etc... */
    },
    "DbSettings": {
        /* (db settings here) */
    }
}
public class AppSettings
{
    public string This { get; set; }
    public string Foo { get; set; }
    /* etc... */
}
services.Configure<AppSettings>(option => Configuration.GetSection("AppSettings").Bind(option));