2

我的问题与此非常相似:Oracle .Net ManagedDataAccess Error: Could not load type 'OracleInternal.Common.ConfigBaseClass' from assembly

但是,我不同意共识的原因有两个。

1)我不确定它会起作用。我对 GAC 了解不多,但我查看了程序集文件夹,没有版本为 4.121.2.0 的 Oracle.ManagedDataAccess 的副本。所有 Oracle.ManagedDataAccess 程序集都以 2 开头。

2)我只在生产服务器上收到此错误,而且我(作为一个低级开发人员)不想在生产服务器上采取任何可能影响其容纳的众多应用程序的操作。

这是我的堆栈跟踪:

Failure: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. 
---> System.TypeInitializationException: The type initializer for 'Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices' threw an exception. 
---> System.TypeLoadException: Could not load type 'OracleInternal.Common.ConfigBaseClass' from assembly 'Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342'.
   at Oracle.ManagedDataAccess.EntityFramework.EntityFrameworkProviderSettings.Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.IEFProviderSettings.get_TracingEnabled()
   at Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.InitializeProviderSettings[T]()
   at Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..ctor()
   at Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..cctor()
   --- End of inner exception stack trace ---
4

1 回答 1

1

问题是服务器使用的 Oracle 客户端版本与您不同。我经常遇到这种情况。我找到的唯一解决方案是确保我正在使用服务器使用的 DLL,或者将服务器更新到我的 Oracle 客户端版本。只要其他版本潜伏在 GAC 中,您的本地版本很可能会被忽略。

于 2017-05-18T14:36:57.690 回答