访问控制器类中的 appsettings.json 值

本文关键字:appsettings json 访问控制 控制器 访问 | 更新日期: 2023-09-27 17:56:53

在弄清楚如何在启动之外读取appsettings.json值时遇到问题.cs。例如,我想做的是在 _Layout.cshtml 中添加配置中的站点名称:

例如:

ViewData["SiteName"] = Configuration.GetValue<string>("SiteSettings:SiteName");

甚至更好:

public class GlobalVars {
    public static string SiteName => Configuration.GetValue<string>("SiteSettings:SiteName");
}

这是我到目前为止的代码:

[appsettings.json]

"SiteSettings": {
    "SiteName": "MySiteName"
}

[启动.cs]

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
    var siteName = Configuration.GetValue<string>("SiteSettings:SiteName");
}
public IConfigurationRoot Configuration { get; }

也许我读错了文档,但我似乎无法在 Startup 类之外公开配置对象。

访问控制器类中的 appsettings.json 值

在你的创业公司里.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<IConfiguration>(Configuration);
    }

然后在控制器中:

public class ValuesController : Controller
{
    IConfiguration configuration;
    public ValuesController(IConfiguration configuration)
    {
        this.configuration = configuration;
    }
}