.NET核心通过命令行传递配置部分

enxuqcxy  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(116)

在appsettingsjson文件中,我有:

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

在Program.cs中,我得到的数据如下所示

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

其中数据库设置类为;

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);
        }
    }

问题是我不想把数据库信息存储在应用程序设置的json文件中。我想从命令行传递信息而不改变代码。我该怎么做呢?

f2uvfpb9

f2uvfpb91#

您需要通过使用:连接“path元素”来“扁平化”参数,并作为键-值对传递。

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

或者

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

一些信息可以在docs -命令行配置提供程序中找到。

相关问题