You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NLog无法向Oracle数据库发送日志,提示找不到Oracle.ManagedDataAccess程序集

报错原因分析

  • 报错信息中提示PublicKeyToken=null,说明NLog加载程序集时默认匹配无强签名的Oracle.ManagedDataAccess.dll,但官方发布的Oracle驱动dll默认带有强签名,公钥Token固定为89b483f429c47342,签名不匹配导致系统判定找不到对应程序集。
  • 程序集版本/框架不匹配:你本地存放的Oracle.ManagedDataAccess.dll的目标.NET框架版本、编译架构(x86/x64)和当前项目运行环境不匹配,也会触发文件加载失败。

解决方案

1. 调整NLog配置的dbProvider参数

在dbProvider属性中补充强签名匹配信息,修改后配置如下:

<target xsi:type="Database" name="oracle" dbProvider="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=你当前使用的Oracle驱动版本号, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionString="${ui-connection-strings:item=oracle}" keepConnection="true">

如果你的项目是.NET Core/.NET 5+环境,使用的是Oracle.ManagedDataAccess.Core驱动,则修改为:

dbProvider="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess.Core"

2. 校验程序集匹配性

  • 右键本地的Oracle.ManagedDataAccess.dll,选择【属性】-【详细信息】,确认文件版本和配置中填写的Version参数完全一致。
  • 确认驱动对应运行框架:.NET Framework项目使用Oracle.ManagedDataAccess,.NET Core/.NET 5+项目优先使用Nuget安装的Oracle.ManagedDataAccess.Core。
  • 确认驱动编译架构和程序运行的进程架构一致,避免x86驱动在x64进程加载的问题。

3. 补充程序集绑定配置(.NET Framework项目可选)

如果调整配置后仍报错,可以在App.config/Web.config的<runtime>节点下添加绑定重定向规则,强制加载对应版本的驱动:

<dependentAssembly>
  <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-你当前使用的驱动版本号" newVersion="你当前使用的驱动版本号" />
</dependentAssembly>

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:15:04