sql >> Base de Datos >  >> RDS >> Oracle

ODP.NET administrado:no se puede encontrar el proveedor de datos de .Net Framework solicitado

Recibí este error al implementar una aplicación ASP.NET MVC 5 usando EntityFramework 5 en nuestro servidor de 64 bits en el que se instaló la versión de 64 bits de los componentes del cliente ODAC.

Seguí el consejo de b_levitt y confirmé que la conexión se podía abrir manualmente sin usar las fábricas, por lo que el ODAC estaba instalado y funcionando, pero los métodos de fábrica no pudieron ubicar los ensamblajes.

Después de tirarme del pelo durante un tiempo no revelado, descubrí que el problema estaba en el archivo machine.config para la versión de 32 bits del marco .NET. No incluía las entradas para los proveedores de Oracle, así que agregué manualmente las siguientes entradas a este archivo:

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

Bajo

<configuration>
  <configSections>

asegúrese de tener las siguientes dos secciones enteras:

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

Puede obtener las entradas exactas de su archivo machine.config en la carpeta framework64.

A continuación, debajo de

  <system.data>
    <DbProviderFactories>

asegúrese de tener los siguientes dos nombres de fábrica:

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

Después de agregar estas entradas, todo funcionó para mí.