registrado proveedor office microsoft está equipo datos controlador conectividad componentes c# asp.net web-config ms-access-2007

c# - office - El proveedor ''Microsoft.ACE.OLEDB.12.0'' no está registrado en la máquina local.



el proveedor ''microsoft.ace.oledb.12.0'' no está registrado en el equipo local excel (3)

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 apilar traza

[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 de MS Access 2007 y esta es mi cadena de conexión dentro de web.config

<add name="ConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/OmanLegalDB.accdb;Persist Security Info=True" providerName="System.Data.OleDb"/>

Cualquier sugerencia para este problema.


Como se sugiere here , debe cambiar la Plataforma de soluciones de " Cualquier CPU " a " x86 ".


Para la versión 12.0 necesita instalar MDAC 2010 desde here .

Esto se debe hacer en el servidor donde publica su aplicación. Debe 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 configuración Any CPU .


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

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

Esta post tiene información detallada sobre cómo solucionarlo.