Error de .Net ManagedDataAccess de Oracle: no se pudo cargar el tipo ‘OracleInternal.Common.ConfigBaseClass’ desde el ensamblaje

Tengo un proyecto que funciona localmente, en nuestro servidor de desarrollo y en nuestro servidor de producción.

Cuando trato de ejecutarlo en el servidor de prueba, aparece el error a continuación, y no sé qué hacer al respecto más allá de mirar fijamente mi pantalla. ¿Consejos? ¿Proceso para rastrear el problema a su fuente?

He instalado el paquete NuGet para Oracle 12.2, etc.

No se pudo cargar el tipo ‘OracleInternal.Common.ConfigBaseClass’ del ensamblado ‘Oracle.ManagedDataAccess, versión = 4.121.2.0, Culture = neutral, PublicKeyToken = 89b483f429c47342’. Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la stack para obtener más información sobre el error y dónde se originó en el código.

Detalles de la excepción: System.TypeLoadException: No se pudo cargar el tipo ‘OracleInternal.Common.ConfigBaseClass’ del ensamblado ‘Oracle.ManagedDataAccess, versión = 4.121.2.0, Culture = neutral, PublicKeyToken = 89b483f429c47342’.

Error de fuente:

Se generó una excepción no controlada durante la ejecución de la solicitud web actual. La información sobre el origen y la ubicación de la excepción se puede identificar utilizando el seguimiento de la stack de excepciones a continuación.

Traza de la stack:

[TypeLoadException: no se pudo cargar el tipo ‘OracleInternal.Common.ConfigBaseClass’ desde el ensamblado ‘Oracle.ManagedDataAccess, versión = 4.121.2.0, Culture = neutral, PublicKeyToken = 89b483f429c47342’.]
Oracle.ManagedDataAccess.EntityFramework.EntityFrameworkProviderSettings.Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.IEFProviderSettings.get_TracingEnabled () +0 Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.InitializeProviderSettings () 111 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..ctor () 629 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..cctor () +28

[TypeInitializationException: el inicializador de tipo para ‘Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices’ lanzó una excepción.]
Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.get_Instance () +24

El Web.Config tiene los siguientes bloques en él:

  

Y

             

NOTA: Hay otros proyectos trabajando en este servidor, solo están usando una versión diferente del cliente de Oracle para .Net. Ninguno de los otros está utilizando únicamente el controlador administrado. Estoy buscando una manera de profundizar en este error, algunos indicios de dónde se obtiene y se carga ese tipo.

Existe un conflicto entre Oracle.ManagedDataAccess de NuGet y el que está instalado (por la instalación del cliente de Oracle) en un servidor y que está registrado en GAC.

Oracle.ManagedDataAccess registro de Oracle.ManagedDataAccess de GAC y eliminará el error: Ejecute la línea de comandos y navegue hasta el directorio:

{Oracle home} \ product \ {version} \ client_64 \ ODP.NET \ managed \ x64

Allí debes encontrar el archivo OraProvCfg.exe . Ejecute el siguiente comando para anular el registro de Oracle.ManagedDataAccess de GAC:

 OraProvCfg /action:ungac /providerPath:Oracle.ManagedDataAccess 

Debe eliminar el ensamblado Oracle.ManagedDataAccess en su GAC (C: \ Windows \ Microsoft.NET \ assembly …)

Utilice la herramienta de comando gacutil para quitar el ensamblaje:

C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ YOUR_VERSION \ bin \ NETFX 4.6.1 Herramientas> gacutil / u Oracle.ManagedDataAccess

Pude arreglarlo reemplazando las referencias en el proyecto a Oracle.ManagedDataAccess y Oracle.ManagedDataAccess.EntityFramework desde las instaladas por el administrador de paquetes a las instaladas por el instalador del cliente oracle. Las versiones son las mismas pero el número de comstackción es diferente en esas DLL

Como han dicho otros, es necesario eliminar Oracle.ManagedDataAccess de GAC.

{Oracle home}\product\12.1.0\dbhome_1\ODP.NET\managed\x64\unconfigure.bat y {Oracle home}\product\12.1.0\dbhome_1\ODP.NET\managed\x836\unconfigure.bat y funciono

Definitivamente hay algo raro con este problema. Estaba desarrollando una aplicación en mi servidor local que funcionaba bien pero obtuve este error cuando subí la aplicación a nuestro servidor. El servidor tiene instalado el cliente oracle. Después de ver este hilo, copié las dos DLL ( Oracle.ManagedDataAccess.dll y Oracle.ManagedDataAccess.EntityFramework.dll ) desde el cliente oracle y reemplacé las versiones en mi directorio bin de aplicaciones. Eso solucionó el problema.

Es necesario instalar los controladores de cliente de Oracle. Los paquetes .NET no los contienen; Proporcionan una traducción del mundo administrado al no administrado. Los controladores están en el mundo no administrado y deben instalarse correctamente.