Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ODP.NET Managed – Der angeforderte .Net Framework-Datenanbieter konnte nicht gefunden werden

Ich habe diesen Fehler erhalten, als ich eine ASP.NET MVC 5-Anwendung mit EntityFramework 5 auf unserem 64-Bit-Server bereitgestellt habe, auf dem die 64-Bit-Version der ODAC-Clientkomponenten installiert war.

Ich folgte dem Rat von b_levitt und bestätigte, dass die Verbindung manuell geöffnet werden konnte, ohne die Factorys zu verwenden, also war der ODAC installiert und funktionierte, aber die Factory-Methoden konnten die Assemblys nicht finden.

Nachdem ich für eine unbekannte Zeit an meinen Haaren gezogen hatte, fand ich heraus, dass das Problem in der Datei machine.config für die 32-Bit-Version des .NET-Frameworks lag. Die Einträge für die Orakelanbieter waren nicht enthalten, daher habe ich dieser Datei manuell die folgenden Einträge hinzugefügt:

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

Unter

<configuration>
  <configSections>

Stellen Sie sicher, dass Sie die folgenden beiden Abschnitte vollständig haben:

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

Die genauen Einträge finden Sie in Ihrer machine.config-Datei im Ordner framework64.

Als nächstes unter

  <system.data>
    <DbProviderFactories>

Stellen Sie sicher, dass Sie die folgenden zwei Fabriknamen haben:

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

Nachdem ich diese Einträge hinzugefügt hatte, funktionierte alles für mich.