O provedor ‘Microsoft.ACE.OLEDB.12.0’ não está registrado na máquina local.

cada coisa funciona bem localmente, mas este erro ocorre quando eu publicá-lo:

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

e rastreio de pilha

 [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 

Estou usando o database MS access 2007 e esta minha string de conexão dentro do web.config

   

alguma sugestão para este problema

Para a versão 12.0, você precisa instalar o MDAC 2010 aqui .

Isso deve ser feito no servidor em que você publica seu aplicativo. Você precisa instalar a versão x86 se a máquina de destino for de 32 bits ou a versão x64 se a máquina de destino for de 64 bits e seu aplicativo for construído com configuração Any CPU .

Como sugerido aqui, você precisa alterar a plataforma de solução de ” Any CPU ” para ” x86 “.

Sua string de conexão está correta, portanto, esse erro pode ser causado pelo seguinte motivo:

  • Se o seu Office for 32 bits em uma máquina de 64 bits e o driver MDAC instalado for 64 bits. Nesse caso, você precisaria instalar o driver MDAC de 32 bits para corresponder aos binários do Office de 32 bits.

Esta postagem contém informações detalhadas sobre como solucioná-lo.