访问控制器类中的appsettings.json值 [英] Access appsettings.json values in controller classes

查看:160
本文介绍了访问控制器类中的appsettings.json值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在弄清如何在startup.cs之外读取appsettings.json值时遇到麻烦.我想做的是,例如,在_Layout.cshtml中,从配置中添加站点名称:

Having trouble figuring out how to read appsettings.json values outside of the startup.cs. What I would like to do is, for instance, is in the _Layout.cshtml, add the site name from the config:

例如:

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

甚至更好:

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

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

Here's my code thus far:

[appsettings.json]

[appsettings.json]

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

[startup.cs]

[startup.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类之外公开Configuration对象.

Maybe I'm reading the docs wrong, but I can't seem to expose the Configuration object outside of the Startup class.

推荐答案

在您的Startup.cs中

In your Startup.cs

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

然后在您的控制器中

public class ValuesController : Controller
{
    IConfiguration configuration;

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

这篇关于访问控制器类中的appsettings.json值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆