Oracle
 sql >> Database >  >> RDS >> Oracle

ODP.NET Managed - Impossibile trovare il provider di dati .Net Framework richiesto

Ricevevo questo errore durante la distribuzione di un'applicazione ASP.NET MVC 5 utilizzando EntityFramework 5 sul nostro server a 64 bit su cui era installata la versione a 64 bit dei componenti client ODAC.

Ho seguito il consiglio di b_levitt e ho confermato che la connessione poteva essere aperta manualmente senza utilizzare le fabbriche, quindi l'ODAC era installato e funzionante, ma i metodi di fabbrica non erano in grado di individuare gli assiemi.

Dopo aver tirato i capelli per un periodo di tempo non divulgato, ho capito che il problema era con il file machine.config per la versione a 32 bit del framework .NET. Non includeva le voci per i provider Oracle, quindi ho aggiunto manualmente le seguenti voci a questo file:

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

Sotto

<configuration>
  <configSections>

assicurati di avere le seguenti due sezioni complete:

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

Puoi ottenere le voci esatte dal tuo file machine.config nella cartella framework64.

Successivamente, sotto

  <system.data>
    <DbProviderFactories>

assicurati di avere i seguenti due nomi di fabbrica:

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

Dopo aver aggiunto queste voci, tutto ha funzionato per me.