Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas enregistré sur la machine locale (server)

Je sais que cette question comporte douzaine de réponses et de publications, mais rien ne fonctionne pour moi.

J'ai mon application MVC 5 et je la déploie sur IIS 7.5 vers mon server. L'application fonctionne bien, tout fonctionne jusqu'à ce que je passe à l'Action, où j'utilise ACE.OLEDB.

Je reçois cette erreur:

[InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.] System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionSsortingng constr, DataSourceWrapper& datasrcWrapper) +1785474 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionSsortingng 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(Ssortingng 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 

J'ai trouvé quelques réponses sur le Web et j'ai fait ce qui suit:

  1. Installation du moteur de database Microsoft Access 2010 Redissortingbuable
  2. Installation du pilote Office System 2007: composants de connectivité de données

J'ai essayé ceci:

  1. À partir de l'explorateur de solution, cliquez avec le button droit de la souris sur votre projet, puis click properties
  2. Cliquez sur l'onglet Créer
  3. Changer la cible de plate-forme de: n'importe quelle CPU à x86 | Tout CPU à x64
  4. Reconstruisez votre solution

Aucune suggestion?

C'est probablement un problème de bitness, mais il ne s'agit pas du bitness dans vos propriétés de Build.

Le pilote ACE est disponible en deux versions: x86 et x64.

  1. Vous pouvez seulement installer l'un d'entre eux.
  2. Si vous installez la version x86, seules les applications x86 peuvent l'utiliser. Si vous installez la version x64, seules les applications x64 peuvent l'utiliser. (Oui, c'est stupide.)

Maintenant, si votre application Web s'exécute en mode x86 (32 bits) ou x64 n'est pas déterminée par vos parameters de construction, mais par les parameters de votre pool d'applications : select le pool d'applications dans le Gestionnaire des services Internet, allez dans properties / Paramètres avancés et vérifiez le configuration des applications Enable 32-bit . Si elle est définie, votre application s'exécute en mode x86, sinon en mode x64. Assurez-vous que c'est le même mode que celui dont vous avez installé le pilote ACE.

(Bien sûr, la réponse de Steve concernant l'utilisation du bon nom du conducteur s'applique également.)

Il n'y a pas

 Microsoft.ACE.OLEDB.4.0 

Il y a

 Microsoft.ACE.OLEDB.12.0 

ou

 Microsoft.JET.OLEDB.4.0 

Bien sûr, les règles habituelles d'environ 32 bits et 64 bits doivent être appliquées avec précaution

Voir cette réponse

Vous devez donc installer le redissortingbuable du moteur de database Access que vous pouvez download à partir d'ici . Mais vous devriez faire attention à download la version correcte (32 bits ou 64 bits) en fonction de la plate-forme cible choisie pour créer votre application. (AnyCPU, x64, x86).

Bien sûr, si votre server a installé Office, vous avez déjà installé l'ACE, mais cela pourrait être pour une plate-forme différente et votre application doit être compilée pour la même. (Exemple, Office 32bit puis ACE 32bit et vous devez comstackr votre application pour x86)

Probablement le problème X86 ou X64

vous devez l'installer:

2007 Office System Driver: composants de connectivité de données. ( http://www.microsoft.com/en-us/download/details.aspx?id=23734 )

alors assurez-vous:

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

Vous devez simplement modifier le gestionnaire de configuration.

Pas:

  1. Cliquez avec le button droit de la souris sur le nom de votre projet dans l'Explorateur de solutions.
  2. Choisissez le gestionnaire de configuration.
  3. Une fois la boîte de dialog ouverte, changez la plate-forme de solution active en tant que nouvelle ….
  4. Encore une fois la boîte de dialog ouverte, choisissez la CPU x86.
  5. Cliquez sur OK et fermez Configuration Manager.
  6. Enfin, exécutez votre projet.