【问题标题】:How to bind configuration objects from appsettings.json to user objects correctly如何将 appsettings.json 中的配置对象正确绑定到用户对象
【发布时间】:2017-03-19 17:43:04
【问题描述】:

我在 .net Core 1.1 上开始了一些基本项目, 我希望将 appsettings.json 中的一些属性映射到对象,但我可能无法理解正确的名称约定或一些非常基本的东西

Regarding MSDN 使用选项和配置对象部分, 它很容易使用。 我在 appsettings.json 中添加了下一行

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },

  "XXXOptions": {
    "X1": {
      "AppId": "11",
      "AppCode": "22"
    },
    "X2": {
      "AppId": "",
      "AppCode": ""
    }
  }
}

我添加了自定义类

 public class XXXOptions
    {
        public XXXOptions()
        {
        }
        public X1 X1{ get; set; }
        public X2 X2{ get; set; }
    }

    public class X1
    {
        public int AppId { get; set; }
        public int AppCode { get; set; }
    }

    public class X2
    {
        public int AppId { get; set; }
        public int AppCode { get; set; }
    }

我在 Startup.cs 中添加了下一个代码

  public void ConfigureServices(IServiceCollection services)
        {
            // Adds services required for using options.
            services.AddOptions();

            // Register the IConfiguration instance which MyOptions binds against.
            services.Configure<XXXOptions>(Configuration);

            // Add framework services.
            services.AddMvc();
        }

 public class XXXController : Controller
    {
        private readonly XXXOptions _options;
        public XXXController(IOptions<XXXOptions> optionsAccessor)
        {
            _options = optionsAccessor.Value;
        }

        public IActionResult Index()
        {
            var option1 = _options.X1;
            return Content($"option1 = {option1.AppCode}, option2 = {option1.AppId}");
            return View();
        }
    }

optionsAccessor.Value - Value 在 XXXController 构造函数中包含空值。

但似乎框架在 Configuration 属性内的 JsonConfigurationProvider 处显示 mappet 值

有什么想法吗?

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    ConfigureServices方法改变:

    services.Configure<XXXOptions>(Configuration);
    

    services.Configure<XXXOptions>(Configuration.GetSection("XXXOptions"));
    

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2020-09-04
      相关资源
      最近更新 更多