【发布时间】:2022-09-30 18:07:06
【问题描述】:
我们正在尝试将日志发送到 Oracle 数据库,但无法运行 Nlogs,因为我们收到一条错误消息:
2021-11-18 13:00:25.5506 Error DatabaseTarget(Name=oracle): Failed to create ConnectionType from DBProvider=Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess Exception: System.IO.FileNotFoundException: Could not load file or assembly \'Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=null\'. The system cannot find the file specified.
File name: \'Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=null\'
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, StackCrawlMarkHandle stackMark, ObjectHandleOnStack assemblyLoadContext, ObjectHandleOnStack type, ObjectHandleOnStack keepalive)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at NLog.Targets.DatabaseTarget.SetConnectionType()
at NLog.Targets.DatabaseTarget.InitializeTarget()
2021-11-18 13:00:25.5726 Error Database Target[oracle]: Error initializing target Exception: System.IO.FileNotFoundException: Could not load file or assembly \'Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=null\'. The system cannot find the file specified.
File name: \'Oracle.ManagedDataAccess, Culture=neutral, PublicKeyToken=null\'
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, StackCrawlMarkHandle stackMark, ObjectHandleOnStack assemblyLoadContext, ObjectHandleOnStack type, ObjectHandleOnStack keepalive)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at NLog.Targets.DatabaseTarget.SetConnectionType()
at NLog.Targets.DatabaseTarget.InitializeTarget()
at NLog.Targets.Target.Initialize(LoggingConfiguration configuration)
2021-11-18 13:00:25.5726 Trace Initializing BufferingWrapper Target[OracleDatabase_wrapped](Database Target[oracle])
我们在运行进程的路径文件夹中有 Oracle.ManagedDataAccess.dll,我们的 nlog 配置文件是:
<target xsi:type=\"BufferingWrapper\" name=\"OracleDatabase\" bufferSize=\"100\" flushTimeout=\"5000\" slidingTimeout=\"false\">
<target xsi:type=\"Database\" name=\"oracle\" dbProvider=\"Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess\" connectionString=\"${ui-connection-strings:item=oracle}\" keepConnection=\"true\">
<commandText>
insert into ....
</commandText>
<parameter name=\"....\" />
</target>
</target>
日志:4.7.7
我们需要组装dll吗?哪个可能是此错误的原因?
-
Oracle dll 是 32 位还是 64 位?如果您的代码是为 x86 或 x64 显式编译的,请检查它是否有效
-
不熟悉connectionString值,但是
${ui-connection-strings:item=oracle}是在某处定义的变量吗?它是否在 nlog 配置文件中定义?
标签: .net nlog oracle-manageddataaccess