c# - ASP.NET 5 (vNext) - 获取配置设置

标签 c# asp.net .net asp.net-core .net-core

我正在编写一个基本的应用程序来学习 ASP.NET 5。我发现一个非常令人困惑的领域是配置。在 ASP.NET 5 之前,我可以执行以下操作:

var settingValue = ConfigurationManager.AppSettings["SomeKey"];

我会在我的代码中散布这样的代码行。现在,在 vNext 世界中,我有一个如下所示的 config.json 文件:

config.json

{
  "AppSettings": {
    "SomeKey":"SomeValue"
  }
}

然后在 Startup.cs 中,我有以下内容: Startup.cs

public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment environment) 
{
  Configuration = new Configuration()
      .AddJsonFile("config.json");
}

从那里,我完全被难住了。我在/src/Website/Code/Models/MyClass.cs 中有 MyClass.cs。

MyClass.cs

public class MyClass
{
  public string DoSomething() 
  {
    var result = string.Empty;
    var keyValue = string.Empty; // TODO: What do I do here? How do I get the value of "AppSettings:SomeKey"?
    return result;
  }
}

如何获取“Ap​​pSettings:SomeKey”的值?

最佳答案

ASP.NET 5 大量使用依赖注入(inject),因此如果您也使用依赖注入(inject),那么这非常简单。如果您检查示例 MVC6 项目,您可以看到它是如何工作的:

首先,在 Properties 中定义了一个 AppSettings 类,它是您的类支持的选项的强类型版本。在示例项目中,这仅包含 SiteTitle。

public class AppSettings
{
    public string SiteTitle { get; set; }
}

然后,这个类在ConfigureServices中通过依赖注入(inject)被初始化。 Configuration 这里是您在 Startup 类的构造函数中创建的。

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));
    // ...
}

然后,假设您的类是由依赖项注入(inject)容器实例化的,您只需请求一个 IOptions,您就会得到一个。例如,在 Controller 中您可以具有以下内容:

public class HomeController
{
    private string _title;
    public HomeController(IOptions<AppSettings> settings) 
    {
        _title = settings.Options.SiteTitle;
    }
}

关于c# - ASP.NET 5 (vNext) - 获取配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30263681/

相关文章:

c# - 将字典序列化为json文件

c# - 如何根据用户在 ASP.NET 中另一个下拉列表中的选择禁用下拉列表项?

c# - 从 https 谷歌搜索中获取谷歌搜索词

c# - .Net - 随机排序的自定义分页

c# - 如果内容字符串宽度大于 ListBox 宽度,Winforms DotNet ListBox 项目是否自动换行?

c# - EF 中的 GUID COMB 策略

c# - 显示自定义层次结构

c# - 我如何让 TcpListener 接受多个连接并单独处理每个连接?

.net - 语言框架和win7

c# - 链中的多个后台 worker