Jag fick det här felet när jag distribuerade en ASP.NET MVC 5-applikation med EntityFramework 5 till vår 64-bitarsserver där 64-bitarsversionen av ODAC-klientkomponenterna installerades.
Jag följde b_levitts råd och bekräftade att anslutningen kunde öppnas manuellt utan att använda fabrikerna, så ODAC var installerad och fungerade, men fabriksmetoderna kunde inte lokalisera sammansättningarna.
Efter att ha dragit i håret under en okänd tid kom jag på att problemet låg i filen machine.config för 32-bitarsversionen av .NET-ramverket. Det inkluderade inte posterna för oracle-leverantörerna, så jag la manuellt till följande poster i den här filen:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
Under
<configuration>
<configSections>
se till att du har följande två avsnittshelheter:
<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" />
Du kan hämta de exakta posterna från din machine.config-fil under mappen framework64.
Därefter under
<system.data>
<DbProviderFactories>
se till att du har följande två fabriksnamn:
<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" />
Efter att ha lagt till dessa poster fungerade allt för mig.