ODP.Net 驱动程序在 .NET Core 5.0 上抛出异常

ODP.Net Driver Throwing Exception on .NET Core 5.0(ODP.Net 驱动程序在 .NET Core 5.0 上抛出异常)

本文介绍了ODP.Net 驱动程序在 .NET Core 5.0 上抛出异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将我的数据库应用程序从 .NET Core 3.1 移植到 .NET Core 5.0.

I am trying to port my database application from .NET Core 3.1 to .NET Core 5.0.

运行以下代码时,

        public async Task<List<T>> LoadDataFromSQL<T, U>(string sql, U parameters, string connectionStringName)
        {
            using (IDbConnection connection = new OracleConnection(await GetConnectionString()))
            {
                var rows = await connection.QueryAsync<T>(sql,
                                                          parameters,
                                                          commandType: CommandType.Text);
                return rows.ToList();
            }
        } 

我收到此异常:

"System.Reflection.TargetInvocationException: 调用的目标已抛出异常.\r\n --->System.TypeInitializationException: 'OracleInternal.ServiceObjects.OracleConnectionImpl' 的类型初始值设定项引发异常.\r\n --->System.TypeInitializationException: 'Oracle.ManagedDataAccess.Types.TimeStamp' 的类型初始值设定项引发异常.\r\n --->System.NotSupportedException:此应用程序中禁用了 BinaryFormatter 序列化和反序列化.有关详细信息,请参阅 https://aka.ms/binaryformatter.\r\n 在 OracleInternal.Common.OracleTimeZone.GetInstance()\r\n 在 Oracle.ManagedDataAccess.Types.TimeStamp..cctor()\r\n --- 内部异常堆栈跟踪结束 ---\r\n 在 Oracle.ManagedDataAccess.Types.TimeStamp.InitializelatestTZversion()\r\n 在 OracleInternal.ServiceObjects.OracleConnectionImpl..cctor()\r\n --- 内部异常堆栈跟踪结束 ---\r\n 在 OracleInternal.ServiceObjects.OracleConnectionImpl..ctor()\r\n --- 内部结束,除了离子堆栈跟踪 ---\r\n"

"System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.\r\n ---> System.TypeInitializationException: The type initializer for 'OracleInternal.ServiceObjects.OracleConnectionImpl' threw an exception.\r\n ---> System.TypeInitializationException: The type initializer for 'Oracle.ManagedDataAccess.Types.TimeStamp' threw an exception.\r\n ---> System.NotSupportedException: BinaryFormatter serialization and deserialization are disabled within this application. See https://aka.ms/binaryformatter for more information.\r\n at OracleInternal.Common.OracleTimeZone.GetInstance()\r\n at Oracle.ManagedDataAccess.Types.TimeStamp..cctor()\r\n --- End of inner exception stack trace ---\r\n at Oracle.ManagedDataAccess.Types.TimeStamp.InitializelatestTZversion()\r\n at OracleInternal.ServiceObjects.OracleConnectionImpl..cctor()\r\n --- End of inner exception stack trace ---\r\n at OracleInternal.ServiceObjects.OracleConnectionImpl..ctor()\r\n --- End of inner except ion stack trace ---\r\n"

是否可以通过我的应用程序解决此问题?

Is is possible to work around this from my application?

我使用的是最新版本的 Oracle.ManagedDataAccess.Core 2.19.91,发布于 2020 年 10 月 22 日.另外,我使用的是 Dapper 2.0.35.

I am using the latest version of Oracle.ManagedDataAccess.Core 2.19.91, release on 10/22/2020. Also, I am using Dapper 2.0.35.

推荐答案

我发现 Oracle 正在为此进行修复,该修复应该很快就会推出.

I discovered that Oracle is working on a fix for this which should be available soon.

与此同时,如果有人遇到此问题,有一个解决方法.

In the meantime, in case anyone runs into this issue there is a workaround.

在您的项目文件中,您可以将 XML 语句添加到 EnableUnsafeBinaryFormatterSerialization.

In your project file, you can add the XML statement to EnableUnsafeBinaryFormatterSerialization.

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
  </PropertyGroup>

这篇关于ODP.Net 驱动程序在 .NET Core 5.0 上抛出异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:ODP.Net 驱动程序在 .NET Core 5.0 上抛出异常

基础教程推荐