jsonasp.net-core.net-corenlogappsettings

How to reference another value within the same appsettings.json file?


I need database connection string in two places in appsettings.json.

Is it possible to introduce common variable or json-path related references into json file to avoid potencial problems?

It would be lovely to have it without touching c# code.

{
...
  "ConnectionStrings": {
    "Default": "Host=localhost;Database=db;Port=5432;Username=postgres;Password=postgres"
  },
  "Nlog": {
    "targets": {
      "database": {
        "type": "Database",
        "dbProvider": "Npgsql.NpgsqlConnection, Npgsql",
        "connectionString": "Host=localhost;Database=db;Port=5432;Username=postgres;Password=postgres",
...
      }
    }
...
}

Solution

  • NLog has the ability to lookup values in the appsettings.json. You can do it like this with ${configsetting}:

    {
    ...
      "ConnectionStrings": {
        "Default": "Host=localhost;Database=db;Port=5432;Username=postgres;Password=postgres"
      },
      "Nlog": {
        "targets": {
          "database": {
            "type": "Database",
            "dbProvider": "Npgsql.NpgsqlConnection, Npgsql",
            "connectionString": "${configsetting:item=ConnectionStrings.Default}",
    ...
          }
        }
    ...
    }
    

    See also https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer