我的项目中有这个appsettings.json
文件,看起来像这样:
{
"ConnectionStrings": {
"MyConnectionString": "Server=SQLSERVER;Database=MyDatabse;Trusted_Connection=True;"
},
"NLog": {
"targets": {
"database": {
"type": "Database",
"dbProvider": "System.Data.SqlClient",
"connectionString": "Server=SQLSERVER;Database=MyDatabse;Trusted_Connection=True;"
}
}
}
}
我不想在多个地方写我的连接字符串。我可以以某种方式引用以前的连接字符串吗?
我已经尝试过:"connectionString": "${appsetting:name=ConnectionStrings.MyConnectionString}"
,它不起作用。
请参阅@Jogge的答案,以了解如何通过NLog配置引用连接字符串。我的答案最初是针对默认ASP.NET Core基础结构中存在此功能的,我不知道NLog配置提供了此功能。
此功能在通过appsettings.json
的默认ASP.NET应用程序配置中不可用。
我绝对建议不要将连接字符串存储在appsettings.json
文件中。连接字符串是敏感数据,不应作为纯文本存储的文件的一部分,并且可能容易受到攻击。另外,appsettings.json
是Git中已签入的文件之一,因此在git历史记录中连接字符串将清晰可见。而是应在user secrets中或通过环境设置来配置连接字符串(例如Azure具有用于连接字符串的特殊UI)。
您可以使用NLog ConfigSetting布局渲染器。
只需在NLog部分中将其用作您的连接字符串:"connectionString": "${configsetting:name=ConnectionStrings.MyConnectionString}"
来源:https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer