Ich habe eine in .NET 3.5 entwickelte Windows-Anwendung auf einem 32-Bit-Windows 2008-Server erstellt. Bei der Bereitstellung der Anwendung auf einem 64-Bit-Server wird der Fehler "Microsoft.Jet.OLEDB.4.0 'Provider ist nicht auf dem lokalen Computer registriert" angezeigt.
Als Lösung für dieses Problem habe ich die Build-Eigenschaft des Projekts in X86 geändert, sodass es im 32-Bit-Modus erstellt und das Projekt auf dem 32-Bit-Computer neu erstellt wird. Das gleiche Projekt verwendet jedoch andere DB-Treiber (DB2, SQL usw.), um eine Verbindung zu anderen Datenbanken herzustellen. Wenn ich meine App erneut im 64-Bit-Betriebssystem bereitstelle, wird die Ausnahme "Versuch, eine 64-Bit-Assembly auf einer 32-Bit-Plattform zu laden" ausgelöst.
Ich verwende den Microsoft.Jet.OLEDB.4.0-Treiber zum Lesen und Schreiben in Excel (.xls).
Wenn das Problem in ASP.NET weiterhin besteht, musste ich lediglich die Einstellung "32-Bit-Anwendungen aktivieren" in den erweiterten Einstellungen für den Anwendungspool auf "Wahr" ändern.
quelle
Ich habe das gleiche Problem
Ich habe die Antwort von neo angewendet, aber es hat nicht funktioniert, bis ich den Anbieter auf "Provider = Microsoft.ACE.OLEDB.12.0;" geändert habe. in Verbindungszeichenfolge.
Hoffe, dies wird helfen, wenn jemand das gleiche Problem hat.
quelle
Ich weiß, dass es ziemlich alte Fragen sind und viele Personen sie beantwortet haben. aber ich fasse die Dinge zum Verständnis zusammen:
Wenn die Dateierweiterung xls und das Betriebssystem 32 Bit ist, können nur Sie "
Microsoft.Jet.OLEDB.4.0
" verwenden. Microsoft hat keine 64-Bit-Version dieses Treibers veröffentlicht.Wenn die Dateierweiterung xlsx oder das Betriebssystem 64 Bit ist, müssen Sie "
Microsoft.ACE.OLEDB.12.0
" verwenden. Die im 32/64-Bit-Modus kompilierte Anwendung hat keinen Einfluss auf die Auswahl des Treibers.Installieren Sie immer den 64-Bit-Treiber von
Microsoft.ACE.OLEDB.12.0
OS 64-Bit. Wenn Sie Office 32 Bit bereits installiert haben, müssen Sie den Treiber von cmd mit dem Argument / passive ausführen. Dieser Hack funktioniert nur bis Office 2013. Microsoft hat diese Problemumgehung von Office 2016 für Microsoft.ACE.OLEDB.16.0-Treiber gestoppt.Laden Sie die Treiber Microsoft.ACE.OLEDB.12.0 herunter
Wenn die Anwendung mit dem AnyCPU-Flag kompiliert wird, sucht sie nach 64-Bit-Zugriffstreibern unter 64-Bit-Betriebssystemen und 32-Bit-Zugriffstreibern unter 32-Bit-Betriebssystemen.
quelle
Ich habe die gleiche Nachricht, ich habe eine Webseite mit do in Visual Studio 2010, ich habe eine file.xls auf dieser Seite gelesen, in meinem Projekt hat Visual kein Problem, wenn ich sie auf mein IIS-Lokal stelle, wirf mir ein 'Microsoft .Jet.OLEDB.4.0 'Anbieter ist nicht auf dem lokalen Computer registriert' , ich habe das Problem als nächstes behoben, indem ich die folgenden Schritte ausgeführt habe:
1.-Öffnen Sie IIS
2.-Ändern Sie den appPool in den erweiterten Einstellungen
3.-true, um eine 32-Bit-Anwendung zu aktivieren.
und das ist alles
Ich habe Configuration Manager auf Active Solution Platform in X86 geändert
quelle
Wenn Ihre Anwendung unter localIIS ausgeführt wird, können Sie dieses Problem lösen, indem Sie 32-Bit-Anwendungen in den erweiterten Einstellungen von AppPool aktivieren
quelle
Ich hatte das gleiche Problem. Ich habe die Anwendungskonfiguration auf geändert
x86
, dann hat es funktioniert!quelle
Ich habe gerade meine Projekteigenschaft in das x64-Format geändert
Projekt ---> Eigenschaften ---> Erstellen ---> Ziel-Framework ---> X64
quelle
Wir sind auf dieses Problem in der Desktop-App gestoßen.
Entwicklungsumgebung: Windows 7 Ultimate - 64-Bit-.Net Framework 4.5-Anbieter = Microsoft.Jet.OLEDB.4.0
Es wurde behoben, indem das Plattformziel von einer beliebigen CPU auf X86 geändert wurde. Projekteigenschaften >> Erstellen >> Plattformziel.
quelle
Ich bin mit meiner Desktop-Anwendung auf dieses Problem gestoßen (der Anbieter 'Microsoft.Jet.OLEDB.4.0' ist nicht auf dem lokalen Computer registriert). Ich hatte nicht die Möglichkeit, als 32-Bit-App zu erstellen. In der Hoffnung, dass dies anderen in der gleichen Situation helfen würde.
Ich habe Folgendes getan und das Problem ist behoben:
Installierte die 64-Bit-Version von Microsoft Access Database Engine 2010 Redistributable , wie von neo vorgeschlagen
Mein Provider wurde in Microsoft.ACE.OLEDB.12.0 geändert
quelle
Obwohl eine optimalere Lösung darin besteht, einfach wie oben vorgeschlagen neu zu kompilieren, erfordert dies den Zugriff auf den Quellcode. In meinem Fall hatte ich nur die fertige EXE-Datei und musste diese Lösung verwenden. Es wird
CorFlags.exe
aus dem .Net SDK verwendet, um die Ladeeigenschaften der Anwendung zu ändern.CorLibs.exe
lediglich die Windows-Entwicklungstools .CorFlags.exe
. Für meine Installation des .Net Framework 3.5 SDK war es beiC:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
.path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+
.Du bist fertig! Dadurch werden die Startflags für Ihr Programm so gesetzt, dass es im 32-Bit-WOW64-Modus startet und daher auf microsoft.jet.oledb.4.0 zugreifen kann.
quelle
Änderung der erweiterten Einstellungen des Anwendungspools für IIS-Einstellungen. 32-Bit-Anwendung aktivieren
quelle
Ändern Sie einfach die Eigenschaft basierend auf Ihrer Maschine und alle haben getan :-)
Projekt ---> Eigenschaften ---> Erstellen ---> Ziel-Framework ---> X64
oder
Projekt ---> Eigenschaften ---> Erstellen ---> Ziel-Framework ---> X86
quelle
Ich habe meine Verbindungszeichenfolge von geändert
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Datenquelle = {0}; Persist Security Info = True; Jet OLEDB: Datenbankkennwort =;", gisdbPath);
dazu:
var myConnectionString = string.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Mode = Share Deny None; Datenquelle = {0}; Benutzer-ID = Admin; Passwort =;", gisdbPath);
Es funktioniert für mich nie nach Microsoft.Jet.OLEDB.4.0'registriert gefragt.
quelle
Es gibt in der Tat keine 64-Bit-Version von Jet - und (anscheinend) keine Pläne, eine zu produzieren.
Möglicherweise können Sie den ACE 64-Bit-Treiber verwenden: http://www.microsoft.com/en-us/download/details.aspx?displaylang=de&id=23734
Möglicherweise können Sie das Projekt jedoch in der Express-Version auf 32 Bit umstellen (ich habe es nicht versucht und habe 2008 nicht mehr in irgendeiner Variante installiert).
Vielleicht ist es an der Zeit, Access-Datenbanken komplett zu verschrotten, die Kugel zu beißen und stattdessen auf SQL Server zu setzen?
quelle
Ich verwende VS2013 für Winforms. Die folgende Lösung hat für mich funktioniert.
Download: http://www.microsoft.com/en-us/download/details.aspx?displaylang=de&id=23734
Setzen Sie dann VS Target Platform auf x86.
quelle
In älteren Versionen von IIS finden Sie dies nicht,
Advance Settings
damitEnable 32-bit Applications
Sie die folgenden Befehle ausführen müssen:cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1
und
% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i
Referenz: Hier
quelle
Beim Ausführen von "SQL Server 2014 Importieren und Exportieren von Daten (64-Bit)" unter Windows 8.1 wurde dieselbe Ausnahme angezeigt.
Um das Problem zu beheben, habe ich Folgendes getan
SQL Server 2014 gestartet Importieren und Exportieren von Daten (32-Bit) anstelle von 64-Bit und es funktioniert für mich. Ich habe keine IIS-Einstellung geändert und keine zusätzliche Software installiert.
quelle
Ich weiß, dass dieses Problem immer wieder auftritt, wenn ich meine Anwendung auf einem neuen Server bereitstelle, da ich diesen Treiber verwende, um eine Verbindung zu einer Excel-Datei herzustellen. Also hier ist es, was ich in letzter Zeit mache.
Es gibt einen Windows Server 2008 R2, ich installiere die Access-Treiber für einen x64-Bit-Computer und entferne diese Meldung, was mich sehr freut, wenn ich nur auf einen anderen stoße.
Dieser hier unten funktioniert hervorragend auf meinem Entwicklungscomputer, aber auf dem Server wird mir auch nach der Installation der neuesten ODBC-Treiber ein Fehler angezeigt. Ich denke, dies ist das Problem, aber so habe ich es gelöst.
Ich ersetze durch den neuen Anbieter wie folgt:
Aber wenn ich das mache, gibt es eine Sache, die Sie beachten sollten. Die Verwendung der XLSX-Dateierweiterung und der Excel-Version ist 12.0.
Nachdem ich diese Fehlermeldung erhalten habe, Fehler: "Installierbares ISAM konnte nicht gefunden werden" , entscheide ich mich, die folgenden Dinge ein wenig zu ändern:
und ja, ich bin mit dieser fiesen Sache fertig, aber hier habe ich eine andere Nachricht erhalten. Das Microsoft Access-Datenbankmodul kann die Datei 'time_zone' nicht öffnen oder in sie schreiben. Es wird bereits ausschließlich von einem anderen Benutzer geöffnet, oder Sie benötigen die Berechtigung zum Anzeigen und Schreiben der Daten. was mir sagt, dass ich nicht weit davon entfernt bin, es zu lösen.
Vielleicht gibt es einen anderen Prozess, der die Datei inzwischen geöffnet hat, und alles, was ich tun muss, ist ein Neustart, und alles läuft wie erwartet reibungslos.
quelle
Gehen Sie zu Start-> Ausführen und geben Sie cmd ein. Dadurch wird die Eingabeaufforderung gestartet (auch verfügbar unter Start-> Programme-> Zubehör-> Eingabeaufforderung).
Geben Sie cd .. ein und drücken Sie die Eingabetaste. Geben Sie cd .. ein und drücken Sie erneut die Eingabetaste (tun Sie dies so lange, bis die Eingabeaufforderung Folgendes anzeigt:>)
Jetzt müssen Sie zu einem speziellen Ordner wechseln, der c: \ windows \ system32 oder c: \ winnt \ system32 oder c: \ windows \ sysWOW64 sein kann. Versuchen Sie, jeden dieser Ordner einzugeben, z. B. cd c: \ windows \ sysWOW64 (wenn das System den angegebenen Pfad nicht finden kann, versuchen Sie es mit dem nächsten) cd c: \ windows \ system32 cd c: \ winnt \ system32 Wenn einer dieser Pfade keinen Fehler verursacht, stoppen Sie, Sie haben den gefunden richtiger Ordner.
Jetzt müssen Sie die OLE DB 4.0-DLLs registrieren, indem Sie diese Befehle eingeben und nacheinander die Eingabetaste drücken
regsvr32 Msjetoledb40.dll regsvr32 Msjet40.dll regsvr32 Mswstr10.dll regsvr32 Msjter40.dll regsvr32 Msjint40.dll
quelle
Es gibt keinen 64-Bit-Anbieter für Jet. Wenn Sie mehrere DB-Quellen unterstützen möchten, einschließlich Jet to Excel, benötigen Sie mindestens diesen Teil Ihrer Anwendung, um in einem 32-Bit-Prozess ausgeführt zu werden.
Der Fehler, den Sie beim Kompilieren für x86 erhalten, ist etwas seltsam. Ich kann nicht sehen, wie Sie in diesem Fall auf 64-Bit-Assemblys verweisen würden.
quelle