Get appsettings.json values in service .net core

2019-05-16 00:10发布

I have appsettings.json file where I want to declare paths to files.

"Paths": { "file": "C:/file.pdf" }

I want to access this value in my service, I try it to do like this:

public class ValueService: IValueService
{
    IConfiguration Configuration { get; set; }

    public MapsService(IConfiguration configuration)
    {
        this.Configuration = configuration;
    }


    public string generateFile()
    {

           var path = Configuration["Paths:file"] ;
    }

}

however I get null values for var path

Startup.cs file has appsettings.json declared as it takes connection string from there. Is it possible to access these values outside startup.cs class?

2条回答
干净又极端
2楼-- · 2019-05-16 00:17

You can see my code here for detail. Basically I want to read email setting and the structure of my email setting look like this

"EmailSettings": {
    "MailServer": "",
    "MailPort": "",
    "Email": "",
    "Password": "",
    "SenderName": "",
    "Sender": "",
    "SysAdminEmail": ""
  }

Then I will need to define a class like this to hold all of information in appSetting

 public class EmailSettings
    {
        public string MailServer { get; set; }
        public int MailPort { get; set; }
        public string SenderName { get; set; }
        public string Sender { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string SysAdminEmail { get; set; }
    } 

Finally I inject into my service class or whatever you want

private readonly IOptions<EmailSettings> _emailSetting;

public EmailSender(IOptions<EmailSettings> emailSetting)
{
    _emailSetting = emailSetting;
}

then call

var something = _emailSetting.Value.SenderName

Email sender file can be found here

If you have any question just let me know.

** Note this example help you read appSetting inside service class like class library or we can access appsetting data from outside main mvc app.

查看更多
等我变得足够好
3楼-- · 2019-05-16 00:31

You should register Configuration in ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddSingleton<IConfiguration>(Configuration);
}
查看更多
登录 后发表回答