IIS中的.NET核心传递配置节

vcirk6k6  于 2023-01-22  发布在  .NET
关注(0)|答案(2)|浏览(109)

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

问题是我不想在appsettings json文件中存储数据库信息。我想从IIS托管这个.net核心应用程序,所以我想从IIS发送这个配置信息。有办法实现吗?

8e2ybdfx

8e2ybdfx1#

一个选项是使用 Microsoft.Extensions.Configuration.SystemEnvironment 提供程序,以便您可以使用环境变量设置配置值。
然后,您可以在IIS服务器上设置环境变量,以便为应用提供必要的配置。
另一个选项是 Microsoft.Extensions.Configuration.UserSecrets,它允许您将配置存储在文件系统上的用户位置,而不是appsettings.json文件中。

pgvzfuti

pgvzfuti2#

您可以通过添加."AddEnvironmentVariables()“将appsettings.json中的值替换为环境变量;“在Program.cs中

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((webhostBuilderContext, configurationbuilder) =>
            {
                configurationbuilder.AddJsonFile("appsettings.json")
                .AddEnvironmentVariables();
            })
            .UseStartup<Startup>();

}

ISS中环境变量的设置如下所述:https://stackoverflow.com/a/36836533/5706893
env变量有一个命名约定,例如,对于ConnectionString属性,您的env名称应为
数据源连接字符串
更多详细信息请访问https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0

相关问题