在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发送这个配置信息。有办法实现吗?
2条答案
按热度按时间8e2ybdfx1#
一个选项是使用 Microsoft.Extensions.Configuration.SystemEnvironment 提供程序,以便您可以使用环境变量设置配置值。
然后,您可以在IIS服务器上设置环境变量,以便为应用提供必要的配置。
另一个选项是 Microsoft.Extensions.Configuration.UserSecrets,它允许您将配置存储在文件系统上的用户位置,而不是appsettings.json文件中。
pgvzfuti2#
您可以通过添加."AddEnvironmentVariables()“将appsettings.json中的值替换为环境变量;“在Program.cs中
ISS中环境变量的设置如下所述:https://stackoverflow.com/a/36836533/5706893
env变量有一个命名约定,例如,对于ConnectionString属性,您的env名称应为
数据源连接字符串
更多详细信息请访问https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0