C# 获取服务.net核心中的appsettings.json值

C# 获取服务.net核心中的appsettings.json值,c#,.net,asp.net-core,.net-core,appsettings,C#,.net,Asp.net Core,.net Core,Appsettings,我有appsettings.json文件,我想在其中声明文件的路径 “路径”:{ “文件”:“C:/file.pdf” } 我想在我的服务中访问此值,我尝试这样做: public class ValueService: IValueService { IConfiguration Configuration { get; set; } public MapsService(IConfiguration configuration) { this.Conf

我有
appsettings.json
文件,我想在其中声明文件的路径

“路径”:{
“文件”:“C:/file.pdf”
}

我想在我的服务中访问此值,我尝试这样做:

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

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


    public string generateFile()
    {

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

}
但是,对于
var路径


Startup.cs
文件声明了
appsettings.json
,因为它从那里获取连接字符串。是否可以在
startup.cs
类之外访问这些值?

您应该在ConfigureServices中注册配置:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddSingleton<IConfiguration>(Configuration);
}
public void配置服务(IServiceCollection服务)
{
services.AddMvc();
services.AddSingleton(配置);
}
您可以查看我的详细信息。基本上,我想阅读电子邮件设置,我的电子邮件设置的结构如下所示

"EmailSettings": {
    "MailServer": "",
    "MailPort": "",
    "Email": "",
    "Password": "",
    "SenderName": "",
    "Sender": "",
    "SysAdminEmail": ""
  }
然后我需要定义一个这样的类来保存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; }
    } 
最后,我将注入我的服务类或任何你想要的东西

private readonly IOptions<EmailSettings> _emailSetting;

public EmailSender(IOptions<EmailSettings> emailSetting)
{
    _emailSetting = emailSetting;
}
可以找到电子邮件发件人文件

如果你有任何问题,请告诉我


**请注意,这个示例帮助您阅读类库等服务类内部的应用设置,或者我们可以从主mvc应用程序外部访问应用设置数据。

您不必单独包含
IConfiguration
,它应该已经包含在内(在
AddMvc
?)@STDMP实际上,AddMvc只是注册mvc中间件,而不是配置
var something = _emailSetting.Value.SenderName