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: 调用的目标已抛出异常. --->System.TypeInitializationException: 'OracleInternal.ServiceObjects.OracleConnectionImpl' 的类型初始值设定项引发异常. --->System.TypeInitializationException: 'Oracle.ManagedDataAccess.Types.TimeStamp' 的类型初始值设定项引发异常. --->System.NotSupportedException:BinaryFormatter 序列化和反序列化在此应用程序中被禁用.有关详细信息,请参阅 https://aka.ms/binaryformatter. 在 OracleInternal.Common.OracleTimeZone.GetInstance() 在 Oracle.ManagedDataAccess.Types.TimeStamp..cctor() --- 内部异常堆栈跟踪结束 --- 在 Oracle.ManagedDataAccess.Types.TimeStamp.InitializelatestTZversion() 在 OracleInternal.ServiceObjects.OracleConnectionImpl..cctor() --- 内部异常堆栈跟踪结束 --- 在 OracleInternal.ServiceObjects.OracleConnectionImpl..ctor() --- 内部结束,除了离子堆栈跟踪 --- "
"System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'OracleInternal.ServiceObjects.OracleConnectionImpl' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Oracle.ManagedDataAccess.Types.TimeStamp' threw an exception. ---> System.NotSupportedException: BinaryFormatter serialization and deserialization are disabled within this application. See https://aka.ms/binaryformatter for more information. at OracleInternal.Common.OracleTimeZone.GetInstance() at Oracle.ManagedDataAccess.Types.TimeStamp..cctor() --- End of inner exception stack trace --- at Oracle.ManagedDataAccess.Types.TimeStamp.InitializelatestTZversion() at OracleInternal.ServiceObjects.OracleConnectionImpl..cctor() --- End of inner exception stack trace --- at OracleInternal.ServiceObjects.OracleConnectionImpl..ctor() --- End of inner except ion stack trace --- "
是否可以通过我的应用程序解决此问题?
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>
相关文章