我正在写一个学习ASP的基本应用程序.净5.我发现一个令人困惑的地方是配置.在ASP之前.NET 5,我可以做以下几点:

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

我会在我的代码中散布这样的代码行.现在,在vNext世界中,我有一个配置.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? 如何获取"AppSettings:SomeKey"的值?
    return result;
  }
}

如何获取"AppSettings:SomeKey"的值?

推荐答案

我强烈建议使用OptionsModel,而不是直接读取配置.它允许将强类型模型绑定到配置.

下面是一个例子:GitHub.com/aspnet/Options/test/Microsoft.Extensions.Options.Test/OptionsTest.cs

针对您的具体情况创建一个模型:

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

然后将其绑定到您的配置:

var config = // The configuration object
var options = ConfigurationBinder.Bind<AppSettings>(config); 
Console.WriteLine(options.SomeSetting);

这样,您就不必担心设置来自何处、如何存储或 struct 是什么.你只需预先定义你的期权模型,奇迹就发生了.

Asp.net相关问答推荐

在控制器中通过依赖项注入使用ASP.NET变量值时,不会持久化

Firefox 和 Chrome 之间 1 像素的行高差

jQuery隐藏字段

Azure 自定义控制器/API .Net 后端

EntityFramework 通过 ID 获取对象?

如何将配置转换应用于外部配置文件

在构建时自动停止/重新启动 ASP.NET 开发服务器

在控制器 asp.net mvc 5 的视图上显示错误消息

使用 IIS 的 ASP.NET 调试超时

Request.Params 和 Request.Form 什么时候不同?

使用域用户的 SQL 连接字符串?

跟踪点有什么用途?

如何在 ASP.Net 网络表单中使用标签?

在 ApiController 中添加自定义响应头

如何在 ASP.NET Core Web API 中配置 JSON 格式的缩进

如何将列表转换为数据表

在后面的代码中删除 css 类

StyleBundle 索引超出了数组的范围

ASP.NET MVC 5 Web.config:FormsAuthenticationModule或FormsAuthentication

我可以在加载事件时从 C# 的 div 标记中动态添加 HTML 吗?