Oracle.Net ManagedDataAccess Erreur: impossible de charger le type 'OracleInternal.Commun.ConfigBaseClass " de l'Assemblée

j'ai un projet qui fonctionne localement, sur notre serveur dev, et sur notre serveur de production.

Quand j'essaie de l'exécuter sur le serveur de test, j'obtiens l'erreur ci-dessous, et je ne sais pas quoi faire à ce sujet au-delà de regarder mon écran d'un air absent. Conseils? Processus de retracer le problème à sa source?

j'ai installé le paquet NuGet pour Oracle 12.2,etc.

ne pouvait pas charger le type ' ou L'interne.Commun.ConfigBaseClass " à partir de Assemblée "Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutre, PublicKeyToken = 89b483f429c47342". Description: Une exception sans entrave s'est produite au cours de l'exécution du web courant demande. Veuillez consulter le traceur de la pile pour plus d'informations sur le erreur et d'où elle vient dans le code.

Détails De L'Exception: Système.TypeLoadException: impossible de charger le type 'OracleInternal.Commun.ConfigBaseClass " de l'Assemblée "Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken = 89b483f429c47342".

Source De L'Erreur:

<!-Une exception non entravée a été générée lors de l'exécution de la demande web actuelle. Informations concernant l'origine et l'emplacement de l'exception peut être identifiée en utilisant la trace de la pile d'exceptions ci-dessous.

Trace De La Pile:

[TypeLoadException: ne pouvait pas charger le type 'OracleInternal.Commun.ConfigBaseClass " de l'Assemblée "Oracle.ManagedDataAccess, Version=4.121.2.0, Culture = neutre, PublicKeyToken = 89b483f429c47342".]

Oracle.ManagedDataAccess.EntityFramework.EntityFrameworkProviderSettings.Oracle.ManagedDataAccess.EntityFramework.Efprovidersetstings.IEFProviderSettings.get_TracingEnabled() + 0 Oracle.ManagedDataAccess.EntityFramework.Efprovidersetstings.Initializeprovidersetsettings() + 111 Oracle.ManagedDataAccess.EntityFramework.Eforaclepriverservices..ctor() + 629 Oracle.ManagedDataAccess.EntityFramework.Eforaclepriverservices..cctor() + 28

[TypeInitializationException: le type initializer for "Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices' a déclenché une exception.]

Oracle.ManagedDataAccess.EntityFramework.Eforaclepriverservices.get_Instance() + 24

Le Web.Config contient les blocs suivants:

  <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>

ET

  <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>

NOTE: Il y a d'autres projets qui travaillent sur ce serveur, ils utilisent juste une version différente du client Oracle pour .Net. Aucun des autres n'utilise seulement le pilote managé. Je suis à la recherche d'un moyen de creuser dans cette erreur, certains indices quant à l'endroit où ce type est originaire et chargé à partir.

21
demandé sur Dylan Brams 2015-05-23 02:19:40

6 réponses

Il y a un conflit entre Oracle.ManagedDataAccess de NuGet et celui qui est installé (par Oracle client installation) sur un serveur et qui est enregistré dans GAC.

Désinscrire Oracle.ManagedDataAccess à partir de GAC et vous débarrasser de l'erreur: Exécuter la ligne de commande et accédez au répertoire suivant:

{Oracle de la maison}\produit\{version}\client_64\ODP.NET\géré\x64

vous devriez y trouver OraProvCfg.exe fichier. Exécutez la commande suivante pour désinscrire Oracle.ManagedDataAccess à partir de GAC:

OraProvCfg /action:ungac /providerPath:Oracle.ManagedDataAccess 
21
répondu Jan Palas 2016-02-04 10:10:42

Vous avez supprimer L'Oracle.Manageddataaccess assembly dans votreGAC (C:\Windows\Microsoft.NET\assembly...)

Utilisez l'outil de commande gacutil pour supprimer l'assemblée:

C:\Program fichiers (x86)\Microsoft SDKs\Windows\YOUR_VERSION\bin\NETFX 4.6.1 outils> gacutil / U Oracle.ManagedDataAccess

18
répondu g.breeze 2016-10-28 08:05:00

a pu le corriger en remplaçant les références dans le projet à Oracle.ManagedDataAccess et Oracle.ManagedDataAccess.Entiteframork à partir de ceux installés par le gestionnaire de paquets jusqu'à ceux installés par l'installateur client oracle. Les versions sont les mêmes mais le nombre de build est différent sur ces DLLs

8
répondu Greg Z. 2015-06-24 14:06:00

comme d'autres ont dit que vous devez supprimer Oracle.ManagedDataAccess from GAC.

I run {Oracle home}\product.1.0\dbhome_1\ODP.NET\managed\x64\unconfigure.bat et {Oracle home}\product.1.0\dbhome_1\ODP.NET\managed\x836\unconfigure.bat et cela a fonctionné

3
répondu Toolkit 2017-01-20 11:13:21

Il y a certainement quelque chose de bizarre avec ce problème. Je développais une application sur mon serveur local qui fonctionnait bien mais j'ai eu cette erreur quand j'ai téléchargé l'application sur notre serveur. Le serveur a le client oracle installé. Après avoir regardé ce fil, j'ai copié les deux Dll (Oracle.ManagedDataAccess.dll& Oracle.ManagedDataAccess.EntityFramework.dll) à partir de oracle client et remplacé les versions dans mon répertoire app bin. Qui a résolu le problème.

1
répondu Helius 06 2015-10-29 19:58:14

vous devez installer les pilotes Client Oracle. Les paquets .NET ne les contiennent pas; ils fournissent une traduction du monde Géré vers le monde non géré. Les pilotes sont dans le monde non géré et doivent être installés correctement.

-1
répondu simon at rcl 2015-05-23 09:15:15