You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在NLog中引用appsettings.json内的数据库连接字符串?

解决NLog引用appsettings.json中连接字符串的问题

首先,你遇到的问题大概率是用错了NLog的配置占位符——${appsetting}是针对传统.NET Framework里的app.config/web.config的,而在.NET Core/.NET 5+的appsettings.json环境下,应该用${configsetting}来读取配置项。

下面是具体的解决步骤:

1. 确保依赖包正确安装

先确认你的项目已经安装了NLog.Extensions.Logging包(这是NLog读取appsettings.json的核心依赖),如果没有的话,通过NuGet安装:

Install-Package NLog.Extensions.Logging
# 或者用.NET CLI
dotnet add package NLog.Extensions.Logging

2. 修改NLog配置中的连接字符串引用

把你原来的"connectionString": "${appsetting:name=ConnectionStrings.MyConnectionString}"替换成:

"connectionString": "${configsetting:name=ConnectionStrings.MyConnectionString}"

修改后的完整appsettings.json示例:

{
  "ConnectionStrings": {
    "MyConnectionString": "Server=SQLSERVER;Database=MyDatabse;Trusted_Connection=True;"
  },
  "NLog": {
    "targets": {
      "database": {
        "type": "Database",
        "dbProvider": "System.Data.SqlClient",
        "connectionString": "${configsetting:name=ConnectionStrings.MyConnectionString}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Info",
        "writeTo": "database"
      }
    ]
  }
}

3. 确保NLog从appsettings.json加载配置

Program.cs中配置NLog读取appsettings.json的配置,代码示例:

var builder = WebApplication.CreateBuilder(args);

// 清除默认日志提供器,仅使用NLog
builder.Logging.ClearProviders();
// 启用NLog,自动读取appsettings.json中的NLog节点
builder.Host.UseNLog();

// 其他项目配置代码...

var app = builder.Build();

// 后续中间件配置...

app.Run();

额外注意事项

  • 如果你的NLog配置放在单独的NLog.config文件中,同样可以用${configsetting:name=ConnectionStrings.MyConnectionString}引用appsettings.json里的连接字符串。
  • 若担心大小写拼写问题,可以添加:ignoreCase=true参数忽略大小写,比如${configsetting:name=connectionstrings.myconnectionstring:ignoreCase=true}

内容的提问来源于stack exchange,提问作者Jogge

火山引擎 最新活动