dataaccess conexion cadena c# asp.net .net oracle entity-framework

c# - conexion - Error de.Net ManagedDataAccess de Oracle: no se pudo cargar el tipo ''OracleInternal.Common.ConfigBaseClass'' desde el ensamblaje



cadena de conexion oracle c# (6)

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

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 pila 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 conjunto ''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 pila de excepciones a continuación.

Traza de la pila:

[TypeLoadException: no se pudo cargar el tipo ''OracleInternal.Common.ConfigBaseClass'' del 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:

<configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </configSections>

Y

<oracle.manageddataaccess.client> <version number="*"> <dataSources> <dataSource alias="PVMDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pdxcludds108.pacificorp.us)(PORT=11086))(CONNECT_DATA=(SERVICE_NAME=DDS1086.PACIFICORP.US))) " /> </dataSources> </version> </oracle.manageddataaccess.client> <connectionStrings> <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=USERID;Password=WORKINGPASSWORD;Data Source=PVMDataSource" /> <add name="PVMEntities" connectionString="metadata=res://*/Models.PVMModel.csdl|res://*/Models.PVMModel.ssdl|res://*/Models.PVMModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=pdxcludds108.pacificorp.us:11086/DDS1086.PACIFICORP.US;PASSWORD=XXXXXXX;PERSIST SECURITY INFO=True;USER ID=XXX&quot;" providerName="System.Data.EntityClient" /> </connectionStrings>

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, alguna sugerencia de dónde se obtiene y se carga ese tipo.


Debe eliminar el ensamblaje Oracle.ManagedDataAccess en su GAC (C: / Windows / Microsoft.NET / assembly ...)

Utilice la herramienta de comando gacutil para quitar el ensamblaje:

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


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é los dos archivos DLL ( Oracle.ManagedDataAccess.dll y Oracle.ManagedDataAccess.EntityFramework.dll ) desde el cliente oracle y reemplacé las versiones en el directorio bin de mi aplicación. 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.


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í deberías encontrar el archivo OraProvCfg.exe . Ejecute el siguiente comando para anular el registro de Oracle.ManagedDataAccess de GAC:

OraProvCfg /action:ungac /providerPath: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 compilación es diferente en esas DLL