ODP.NET-Fehler Der angeforderte .NET Framework-Datenanbieter konnte nicht gefunden werden

8

Ich versuche, eine ASP.NET MVC 4.0-Anwendung zu entwickeln, die Oracle 11g Express und das .NET 4.0-Framework verwendet. Ich kann eine Verbindung zur Datenbank herstellen, indem ich den ODP.NET-Provider verwende, und kann mein EDMX auch für die Datenbank generieren. Was ich nicht tun kann, ist Abfrage der zugrunde liegenden DB mit Entity Framework. Wenn ich meinen DbContext mit dem von Visual Studio erzeugten connectionString instanziiere, erhalte ich den folgenden Fehler:

  

Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert

Es ist jedoch installiert, weil

  1. Ich kann die DLL im GAC sehen.
  2. Es wird in machine.config erwähnt.
  3. Es wird von meinem Projekt referenziert.
  4. Ich benutze es tatsächlich, um mein EDMX aus der Datenbank zu generieren.
  5. Ich habe überprüft, dass ich überall auf die richtige Version (4.112.3.0) verweise

Ich führe den Code lokal auf Cassini und meine Hardware ist 32-Bit-Architektur, also würde ich annehmen, dass ich nur 32-Bit-DLLs verwenden könnte, also ist es kein Architekturproblem.

Das spezifische Bit des Codes ist als solches:

%Vor%

Bitte helft mir, bevor ich alles verlasse, einen Bart wachse und irgendwo in den Bergen lebe.

LÖSUNG : Da ich die Lösung nicht erwähnt habe, werde ich sie hier für zukünftige Generationen erwähnen. Andrei Mikhalevich unten fragte nach meinem Verbindungsstring-Format und obwohl ich schemenhaft war, ging ich hin und schaute nach. Das habe ich gesehen:

%Vor%

Achten Sie nun besonders auf die Zeile

%Vor%

es sollte tatsächlich

lesen %Vor%

andernfalls sagst du EF, [provider.dll] zu verwenden, was keine echte Sache ist. Beachten Sie außerdem, dass die Eigenschaft providerName des connectionString-Elements anscheinend überschrieben oder ignoriert wurde.

UPDATE 2 : Wenn dieser STILL nicht hilft, werfen Sie einen Blick auf machine.config. Sie sollten den folgenden Abschnitt sehen:

%Vor%

Wenn & lt; invariant entfernen="Oracle.DataAccess.Client" / & gt; vorhanden ist, kommentieren Sie es und versuchen Sie es erneut, andernfalls, wenn es nicht da ist, fügen Sie es ein und versuchen Sie es erneut.

    
Captain Kenpachi 08.07.2013, 13:44
quelle

7 Antworten

1

Versuchen Sie dieses Verbindungszeichenfolgeformat:

%Vor%

Überprüfen Sie Beispiele für Verbindungszeichenfolgen für Oracle db Ссылка

    
Andrei 08.07.2013, 13:50
quelle
7

Für uns war es 32 gegenüber 64-Bit-Prozess.

Der Server ist 64 Bit. Der installierte ODP.NET (Oracle Client) ist ebenfalls 64 Bit. Unsere Anwendung kompiliert mit der Zielplattform "Any CPU" und "Prefer 32-bit" Flag SET:

Ссылка

wurde als 32-Bit-Prozess ausgeführt. Nach der Neukompilierung mit der Markierung "un-checked" hat alles funktioniert.

    
Greg Z. 12.03.2014 18:58
quelle
3

Ich habe den gleichen Fehler beim Öffnen der Seite über IIS, 64bit Win7.

Meine Lösung ist:

Gehe zum IIS-Manager - & gt; Anwendungspool - & gt; Erweiterte Einstellungen - & gt; Aktivieren Sie 32-Bit-Anwendungen.

    
lakant 30.10.2014 03:39
quelle
2

Dieser Fehler ist ein wenig irreführend, weil er auch durch falsche CPU-Kontexte verursacht werden kann. Stellen Sie sicher, dass Sie 32-Bit zulassen, wenn Sie einen 32-Bit-Oracle-Treiber verwenden. Dies kann als Einstellung unter IIS erfolgen oder Sie können Ihre Anwendung so einrichten, dass sie als IIS Express-Anwendung ausgeführt wird.

    
Joseph Wykel 21.01.2014 17:47
quelle
1

Eine andere mögliche Lösung für jemanden da draußen.

Meine Webapp funktionierte gut auf meinem Testserver, aber als ich begann, für meinen Live-Server zu entwickeln, bekam ich den gleichen Fehler: Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert

Wenn Sie die zwei Verbindungszeichenfolgen unten vergleichen, werden Sie bemerken, dass dasjenige, das mein Problem verursacht, das Wort "Verwaltet" im Namen des Anbieters hatte. Ich verwende tatsächlich die nicht verwaltete Version des Oracle-Anbieters. Daher bekam ich den Fehler auf meinem Live-Server und nicht auf meinem Testserver.

%Vor%     
Jose G 05.12.2013 22:03
quelle
1

Hier ist, was für mich funktioniert hat. Auf meinem Server war bereits ein Oracle-Client installiert. (Version 11.2.0)

  • Laden Sie von der ODAC für Windows Downloads Seite das ODP.NET herunter Verwalteter Treiber
    (Ich wählte die Version Oktober 2015, 2,43 MB Download)

  • Entpacken Sie die zip-Datei, greifen Sie auf \ lib \ net40 \ Oracle.ManagedDataAccess.dll und legen Sie sie im bin-Ordner ab.

  • Fügen Sie in der Datei web.config einen Verweis auf den verwalteten ODP.NET-Treiber unter system.data \ DbProviderFactories hinzu, wie in erläutert diese Antwort .

Das ist es.

Zur Bestätigung führen Sie diesen Antwortcode aus, um festzustellen, ob der ODP.NET-Provider installiert ist. Sie sollten ODP.NET, Managed Driver in der Liste sehen.

    
James Lawruk 18.04.2016 13:56
quelle
1

Ich hatte ein ähnliches Problem. Es wurde durch Hinzufügen eines NuGet-Pakets gelöst. Ich hatte bereits Oracle.ManagedDataAccess.EntityFramework in meinen Referenzen von der Installation von ODT, aber es gab einen Entity Framework 5 Konflikt mit 6 im ausführlichen Protokoll. Nachdem ich das NuGet-Paket hinzugefügt hatte, fing alles an zu arbeiten.

  • Zur Installation klicken Sie mit der rechten Maustaste auf Referenzen - & gt; NuGet-Pakete verwalten ... - & gt; Suchen Sie auf der Registerkarte Durchsuchen nach Oracle - & gt; Wählen Sie Oracle.ManagedDataAccess.EntityFramework und installieren Sie die neueste Version.
roadrunner71 08.07.2016 17:28
quelle