如何读取appsettings.json值ASP.NET Core

时间:2018-11-20 13:28:11

标签: asp.net

在阅读了有关依赖项注入Here的这篇文章之后,除了控制器类之外,我对如何读取appsetting仍然没有一个清晰的了解。

比如说我有一个助手类,其中包含一堆我打算使用的静态方法,我没有创建此类的实例,我如何读取设置值以在此类方法中使用?

2 个答案:

答案 0 :(得分:2)

我曾经创建过一个助手类,以从我的一个应用程序中的appsettings.config中读取数据:

public static class ConfigValueProvider
{
    private static readonly IConfigurationRoot Configuration;

    static ConfigValueProvider()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

        Configuration = builder.Build();
    }

    public static string Get(string name)
    {
        return Configuration[name];
    }
}

但是后来我查看了我的应用程序,以摆脱依赖于应用程序配置的static方法,以使我的应用程序可测试。

答案 1 :(得分:2)

您应该使用服务。配置如下:

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

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
          services.Configure<JSonAsClass>(Configuration.GetSection("MySectionName"));
          services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

然后,您可以将JSonAsClass注入要使用的任何类中:

        private JSonAsClass jSonAsClass;
        public MailService(IOptions<JSonAsClass> jSonAsClass)
        {
            this.jSonAsClass = jSonAsClass.Value;
        }