El proveedor ‘Microsoft.ACE.OLEDB.12.0’ no está registrado en la máquina local.

todo funciona bien localmente pero este error ocurre cuando lo publico:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. 

y seguimiento de la stack

 [InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.] System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) +1027372 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +337 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +86 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +31 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +76 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +126 System.Data.OleDb.OleDbConnection.Open() +43 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +123 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +319 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +92 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1618 System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) +97 System.Web.UI.WebControls.ListControl.PerformSelect() +34 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +74 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +66 System.Web.UI.WebControls.ListControl.OnPreRender(EventArgs e) +29 System.Web.UI.Control.PreRenderRecursiveInternal() +103 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2496 

Estoy usando la base de datos MS access 2007 y esta es mi cadena de conexión dentro de web.config

   

cualquier sugerencia para este problema

Para la versión 12.0, debe instalar MDAC 2010 desde aquí .

Esto tiene que hacerse en el servidor donde publicas tu aplicación. Necesita instalar la versión x86 si la máquina de destino es de 32 bits o la versión x64 si la máquina de destino es de 64 bits y su aplicación está construida con la configuración de Any CPU .

Como se sugiere aquí , debe cambiar la Plataforma de soluciones de ” Cualquier CPU ” a ” x86 “.

Su cadena de conexión es correcta, por lo que este error podría deberse al siguiente motivo:

  • Si su Office tiene 32 bits en una máquina de 64 bits y el controlador MDAC instalado es de 64 bits. En este caso, necesitaría instalar un controlador MDAC de 32 bits para que coincida con los binarios de Office de 32 bits.

Esta publicación contiene información detallada sobre cómo solucionarlo.