oracle .NET Core 5.0上的ODP.Net驱动程序引发异常

7cwmlq89  于 2023-01-30  发布在  Oracle
关注(0)|答案(2)|浏览(206)

我正在尝试将我的数据库应用程序从. NET Core 3.1移植到. 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();
            }
        }

我得到了这个异常:
"系统.反射.目标调用异常:调用的目标引发了异常。\r\n---〉系统类型初始化异常:"OracleInternal. ServiceObjects. OracleConnectionImpl"的类型初始值设定项引发了异常。\r\n---〉系统类型初始化异常:"Oracle. ManagedDataAccess. Types. TimeStamp"的类型初始值设定项引发了异常。\r\n---〉系统不支持异常:此应用程序中禁用了BinaryFormatter序列化和反序列化。有关详细信息,请参阅https://aka.ms/binaryformatter。\r\n位于OracleInternal.Common.OracleTimeZone.GetInstance()\r\n位于Oracle.管理数据访问.类型.时间戳.. cctor()\r\n---内部异常堆栈跟踪结束---\r\n位于Oracle. ManagedDataAccess.类型.时间戳.初始化最新TZversion()\r\n位于OracleInternal.ServiceObjects.OracleConnectionImpl.. ctor()\r\n---内部异常堆栈跟踪的结尾---\r\n位于OracleInternal.ServiceObjects.OracleConnectionImpl.. ctor()\r\n---内部异常堆栈跟踪的结尾---\r\n "
是否可以从我的应用程序中解决这个问题?
我使用的是最新版本的Oracle. ManagedDataAccess. Core 2.19.91,发布于2020年10月22日。此外,我使用的是Dapper 2.0.35。

cbwuti44

cbwuti441#

我发现甲骨文正在解决这个问题,应该很快就会推出。
在此期间,如果任何人遇到这个问题,有一个变通办法。
在项目文件中,可以将XML语句添加到EnableUnsafeBinaryFormatterSerialization。

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

mwg9r5ms2#

安装Oracle.ManagedDataAccess.Core3.21可完全修复此问题,因此无需进行不安全的二进制序列化。

相关问题