34

ローカルではすべて正常に動作しますが、公開するとこのエラーが発生します。

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

およびスタック トレース

[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

私はMS Access 2007データベースを使用しており、これは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"/>

この問題に対する提案

4

4 に答える 4

44

バージョン 12.0 の場合、ここから MDAC 2010 をインストールする必要があります。

これは、アプリケーションを公開するサーバーで行う必要があります。ターゲット マシンが 32 ビットの場合は x86 バージョンをインストールする必要があり、ターゲット マシンが 64 ビットでアプリケーションが構成を使用してビルドされている場合は x64 バージョンをインストールする必要がありますAny CPU

于 2012-06-24T18:08:49.977 に答える
11

ここで提案されているように、ソリューション プラットフォームを「任意の CPU」から「x86 」に変更する必要があります。

于 2012-10-05T21:32:45.077 に答える
3

接続文字列は正しいため、このエラーは次の理由で発生する可能性があります。

  • Office が 64 ビット マシン上の 32 ビットで、インストールされている MDAC ドライバーが 64 ビットの場合。この場合、32 ビット Office バイナリと一致するように 32 ビット MDAC ドライバーをインストールする必要があります。

この投稿には、トラブルシューティング方法に関する詳細情報があります。

于 2012-06-24T18:18:43.697 に答える