NLog 连接字符串的 appsettings.json 中的引用变量

Reference variables in appsettings.json for NLog connection string

我的项目中有这个 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 核心基础设施和我不知道 NLog 配置提供这样的功能。

旧答案

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

我绝对建议不要在 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