Oracle
 sql >> Base de données >  >> RDS >> Oracle

ODP.NET Managed - Impossible de trouver le fournisseur de données .Net Framework demandé

J'obtenais cette erreur lors du déploiement d'une application ASP.NET MVC 5 à l'aide d'EntityFramework 5 sur notre serveur 64 bits sur lequel la version 64 bits des composants clients ODAC était installée.

J'ai suivi les conseils de b_levitt et confirmé que la connexion pouvait être ouverte manuellement sans utiliser les usines, donc l'ODAC était installé et fonctionnait, mais les méthodes d'usine étaient incapables de localiser les assemblages.

Après m'être tiré les cheveux pendant une durée non divulguée, j'ai compris que le problème venait du fichier machine.config pour la version 32 bits du framework .NET. Il n'incluait pas les entrées pour les fournisseurs Oracle, j'ai donc ajouté manuellement les entrées suivantes à ce fichier :

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

Sous

<configuration>
  <configSections>

assurez-vous d'avoir les deux entiers de section suivants :

<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

Vous pouvez obtenir les entrées exactes de votre fichier machine.config sous le dossier framework64.

Ensuite, sous

  <system.data>
    <DbProviderFactories>

assurez-vous d'avoir les deux noms d'usine suivants :

  <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  <add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

Après avoir ajouté ces entrées, tout fonctionnait pour moi.