appsettings.json中的NLog连接字符串的参考变量

问题描述 投票:0回答:2

我的项目中有这个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}",它不起作用。

c# asp.net-core .net-core nlog appsettings
2个回答
3
投票

请参阅@Jogge的答案,以了解如何通过NLog配置引用连接字符串。我的答案最初是针对默认ASP.NET Core基础结构中存在此功能的,我不知道NLog配置提供了此功能。

旧答案

此功能在通过appsettings.json的默认ASP.NET应用程序配置中不可用。

我绝对建议不要将连接字符串存储在appsettings.json文件中。连接字符串是敏感数据,不应作为纯文本存储的文件的一部分,并且可能容易受到攻击。另外,appsettings.json是Git中已签入的文件之一,因此在git历史记录中连接字符串将清晰可见。而是应在user secrets中或通过环境设置来配置连接字符串(例如Azure具有用于连接字符串的特殊UI)。


2
投票

您可以使用NLog ConfigSetting布局渲染器。

只需在NLog部分中将其用作您的连接字符串:"connectionString": "${configsetting:name=ConnectionStrings.MyConnectionString}"

来源:https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer

© www.soinside.com 2019 - 2024. All rights reserved.