Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ODP.NET Managed - Não foi possível encontrar o provedor de dados .Net Framework solicitado


Eu estava recebendo esse erro ao implantar um aplicativo ASP.NET MVC 5 usando EntityFramework 5 em nosso servidor de 64 bits no qual a versão de 64 bits dos componentes do cliente ODAC estava instalada.

Segui o conselho de b_levitt e confirmei que a conexão poderia ser aberta manualmente sem usar as fábricas, então o ODAC estava instalado e funcionando, mas os métodos de fábrica não conseguiram localizar os assemblies.

Depois de puxar meu cabelo por um período não revelado, descobri que o problema estava no arquivo machine.config para a versão de 32 bits do .NET framework. Ele não incluiu as entradas para os provedores oracle, então adicionei manualmente as seguintes entradas a este arquivo:

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

Debaixo
<configuration>
  <configSections>

certifique-se de ter as seguintes duas seções inteiras:
<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" />

Você pode obter as entradas exatas do seu arquivo machine.config na pasta framework64.

A seguir, sob
  <system.data>
    <DbProviderFactories>

certifique-se de ter os dois nomes de fábrica a seguir:
  <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" />

Depois de adicionar essas entradas, tudo estava funcionando para mim.