【问题标题】:Reference variables in appsettings.json for NLog connection string [duplicate]NLog 连接字符串的 appsettings.json 中的引用变量 [重复]
【发布时间】:2019-10-30 09:14:39
【问题描述】:

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

【问题讨论】:

  • 我不认为你可以。
  • 只是不要在多个地方使用相同的字符串。修改您的配置对象,使它们不必加载多个字符串。但在这种情况下,您不应该尝试这样的事情。出于性能原因,日志没有并且可能不应该至少存储在应用程序的数据库中
  • appsettings.json 对 .NET Core 配置没有特殊意义 - 它只是另一个配置源,与环境变量、数据库、ini 文件等相同。默认配置只要使用正确的名称路径,将允许环境变量或命令行参数覆盖连接字符串。

标签: c# asp.net-core .net-core nlog appsettings


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    旧答案

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

    我绝对建议不要将连接字符串存储在您的appsettings.json 文件中。连接字符串是敏感数据,不应成为以纯文本形式存储且可能受到攻击的文件的一部分。此外,appsettings.json 是 Git 中的签入文件之一,因此连接字符串将在 git 历史记录中一目了然。相反,应在user secrets 或通过环境设置配置连接字符串(例如,Azure 具有用于连接字符串的特殊 UI)。

    【讨论】:

    • 使用 Windows 身份验证时没有秘密。即使使用其他身份验证机制,也没有理由将凭据存储在连接字符串本身中
    • 感谢您的评论。但这不是答案。我已经知道将连接字符串存储在 appsettings 中的风险。
    • 答案在第一句话中——我认为没有任何功能可以引用内置的应用程序设置文件的其他部分。ASP.NET Core 中的配置系统旨在简单等特性必然会导致显着的复杂性,特别是因为配置系统是分层的(因此您可以通过不同的配置源多次覆盖值)
    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    • @Fareanor 我不知道为什么。我已经提供了答案 - 在 ASP.NET Core appsettings.json 中不可能这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2014-07-20
    • 2018-06-21
    • 2021-05-14
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多