【问题标题】:.NET Core pass configuration section via command line.NET Core 通过命令行传递配置部分
【发布时间】:2023-01-20 00:03:28
【问题描述】:

在 appsettingsjson 文件中,我有:

  "DataSource": {
    "ConnectionString": "mongodb://localhost:27017",
    "DatabaseName": "Root",
    "CollectionName": "ApiLog"
  },

在 Program.cs 中,我得到这样的数据

builder.Services.Configure<DatabaseSettings>(
    builder.Configuration.GetSection("DataSource"));

DatabaseSettings 类在哪里;

    public class DatabaseSettings
    {
        public string ConnectionString { get; set; } = null!;

        public string DatabaseName { get; set; } = null!;

        public string CollectionName { get; set; } = null!;
    }

然后我可以通过依赖注入访问 DatabaseSettings 的实例,例如:

    public class LogService
    {
        private readonly IMongoCollection<Log> _collection;

        public LogService(
            IOptions<DatabaseSettings> databaseSettings)
        {
            var mongoClient = new MongoClient(
                databaseSettings.Value.ConnectionString);

            var mongoDatabase = mongoClient.GetDatabase(
                databaseSettings.Value.DatabaseName);

            _collection = mongoDatabase.GetCollection<ElekseLog>(
                databaseSettings.Value.CollectionName);
        }
    }

问题是我不想将数据库信息存储在 appsettings json 文件中。我想在不更改代码的情况下从命令行传递 tis 信息。我怎样才能做到这一点?

【问题讨论】:

    标签: c# .net .net-core configuration


    【解决方案1】:

    您需要通过将“路径元素”与 : 连接并作为键值对传递来“展平”参数。例如:

    yourapp "DataSource:ConnectionString"="mongodb://localhost:27017"
    

    或者

    yourapp  --DataSource:ConnectionString=mongodb://localhost:27017
    

    一些信息可以在文档中找到 - Command-line configuration provider

    【讨论】:

    • 谢谢!如何从 IIS 传递此配置?
    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2014-10-17
    • 2014-11-05
    相关资源
    最近更新 更多