web-dev-qa-db-de.com

Der Anbieter 'Microsoft.ACE.OLEDB.12.0' ist nicht auf dem lokalen Computer (Server) registriert.

Ich weiß, dass diese Frage Dutzende von Antworten und Posts hat, aber für mich funktioniert nichts. 

Ich habe meine MVC 5-Anwendung und verteile sie auf IIS 7.5 auf meinem Server. Die Anwendung läuft gut, alles funktioniert, bis ich zur Action gehe, wo ich ACE.OLEDB verwende.

Ich erhalte diesen Fehler:

[InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.]
System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) +1785474
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +1802032
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +100
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +61
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +964
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6785863
System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +27
System.Data.OleDb.OleDbConnection.Open() +47
QuickbookUploadFromElite3e.Controllers.HomeController.Matters(String filePath) in c:\Users\alex.chakhau\Documents\Visual Studio 2013\Projects\QuickbookUploadFromElite3e\QuickbookUploadFromElite3e\Controllers\HomeController.cs:75
lambda_method(Closure , ControllerBase , Object[] ) +127
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +242
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +12
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +139
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3c() +112
System.Web.Mvc.Async.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() +452
System.Web.Mvc.Async.<>c__DisplayClass30.<BeginInvokeActionMethodWithFilters>b__2f(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.<>c__DisplayClass28.<BeginInvokeAction>b__19() +37
System.Web.Mvc.Async.<>c__DisplayClass1e.<BeginInvokeAction>b__1b(IAsyncResult asyncResult) +241
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +111
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +19
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(IAsyncResult asyncResult, ProcessRequestState innerState) +51
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +111
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

Ich habe im Internet ein paar Antworten gefunden und folgendes gemacht:

  1. Installieren von Microsoft Access Database Engine 2010 Redistributable
  2. Installieren von 2007 Office System Driver: Datenkonnektivitätskomponenten

Ich habe das probiert:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, und klicken Sie dann auf Eigenschaften
  2. Klicken Sie auf die Registerkarte Erstellen
  3. Plattformziel ändern von: Jede CPU in x86 | Beliebige CPU bis x64
  4. Bauen Sie Ihre Lösung neu auf

Irgendwelche Vorschläge?

13
Bryuk

Wahrscheinlich handelt es sich um ein Bitness-Problem, aber nicht um das Bitness in Ihren Build-Eigenschaften.

Der ACE-Treiber ist in zwei Versionen verfügbar: x86 und x64.

  1. Sie können nur einen von ihnen installieren.
  2. Wenn Sie die x86-Version installieren, können sie nur von x86-Anwendungen verwendet werden. Wenn Sie die x64-Version installieren, können sie nur von x64-Anwendungen verwendet werden. (Ja, es ist dumm.)

Ob Ihre Webanwendung nun im x86 2-Bit) oder x64-Modus ausgeführt wird, wird nicht von Ihren Build-Einstellungen bestimmt, sondern von den Einstellungen Ihres Anwendungspool : Wählen Sie den Anwendungspool in IIS Manager aus, gehen Sie zu Eigenschaften/Erweiterte Einstellungen und überprüfen Sie die Einstellung von 32-Bit-Anwendungen aktivieren . Wenn dies festgelegt ist, wird Ihre Anwendung im x86-Modus ausgeführt, andernfalls im x64-Modus. Stellen Sie sicher, dass es sich um denselben Modus handelt, in dem Sie den ACE-Treiber installiert haben.

(Natürlich gilt auch --- (Steves Antwort über die Verwendung des richtigen Treibernamens.)

28
Heinzi

Es gibt kein 

Microsoft.ACE.OLEDB.4.0

Es gibt 

Microsoft.ACE.OLEDB.12.0 

oder 

Microsoft.JET.OLEDB.4.0

Natürlich sollten die üblichen Regeln für 32 Bit und 64 Bit sorgfältig angewendet werden

Diese Antwort sehen

Sie müssen also die umverteilbare Access Database Engine installieren, die Sie hier herunterladen herunterladen können. Sie sollten jedoch die richtige Version (32-Bit oder 64-Bit) herunterladen, je nachdem, welche Zielplattform Sie zum Erstellen Ihrer App gewählt haben. (AnyCPU, x64, x86).

Wenn auf Ihrem Server Office installiert ist, haben Sie natürlich bereits den ACE installiert. Es könnte jedoch eine andere Plattform sein, und Ihre Anwendung muss für dieselbe kompiliert werden. (Beispiel: Office 32bit, dann ACE 32bit und Sie müssen Ihre App für x86 kompilieren.)

9
Steve

wahrscheinlich handelt es sich um ein X86- oder ein X64-Problem

sie müssen es installieren:

Office System Driver 2007: Komponenten für die Datenkonnektivität ( http://www.Microsoft.com/de-de/download/details.aspx?id=23734 )

dann stellen Sie sicher, dass:

BUILD -> Configuration Manager -> Active Solution Platform -> x64 http://www.codeproject.com/Tips/417397/OLEDB-Provider-is-Not-Registered-on-the-Local-Mach

3
JC Lizard

Möglicherweise haben Sie ACE-Treiber installiert, und selbst wenn Sie die Eigenschaften des Anwendungspools ändern, funktioniert die Anwendung.

Möglicherweise fehlt Ihnen jedoch der Konnektivitätstreiber für Ihr System

Versuchen Sie und installieren Sie es von diesem Link, es hat bei mir funktioniert:

https://download.cnet.com/2007-Office-System-Driver-Data-Connectivity-Components/3000-10254_4-75452798.html

1
Shreyas Sawant

Sie müssen nur den Konfigurationsmanager ändern.

Schritte:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihren Projektnamen.
  2. Wählen Sie den Konfigurationsmanager.
  3. Sobald das Dialogfeld geöffnet ist, ändern Sie die Active Solution-Plattform als neu.
  4. Sobald das Dialogfeld geöffnet ist, wählen Sie x86-CPU.
  5. Klicken Sie auf OK und schließen Sie Configuration Manager.
  6. Führen Sie schließlich Ihr Projekt aus.
1
Bhakti K Mishra