gpt4 book ai didi

c# - 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地机器(服务器)上注册

转载 作者:可可西里 更新时间:2023-11-01 08:00:40 25 4
gpt4 key购买 nike

我知道这个问题有很多答案和帖子,但对我来说没有任何用处。

我有我的 MVC 5 应用程序,我将它部署到 IIS 7.5 到我的服务器。应用程序运行良好,一切正常,直到我使用 ACE.OLEDB 进入操作。

我收到这个错误:

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

我在网上找到了几个答案,然后我做了以下事情:

  1. 正在安装 Microsoft Access Database Engine 2010 Redistributable
  2. 正在安装 2007 Office System Driver: Data Connectivity Components

我已经试过了:

  1. 在解决方案资源管理器中右键单击您的项目,然后单击“属性”
  2. 单击构建选项卡
  3. 将平台目标从:任何 CPU 更改为 x86 |任何 CPU 到 x64
  4. 重建您的解决方案

有什么建议吗?

最佳答案

这可能是位数问题,但与您的构建属性中的位数无关。

ACE 驱动程序有两个版本:x86 和 x64。

  1. 您只能安装其中一个。
  2. 如果安装 x86 版本,则只有 x86 应用程序可以使用它。如果安装 x64 版本,则只有 x64 应用程序可以使用它。 (是的,这很愚蠢。)

现在,您的 Web 应用程序是在 x86(32 位)还是 x64 模式下运行不是由您的build设置决定,而是由应用程序池的设置决定:在 IIS 管理器中选择应用程序池,转到属性/高级设置并验证启用 32 位应用程序 的设置。如果已设置,您的应用程序将以 x86 模式运行,否则以 x64 模式运行。确保它与您安装 ACE 驱动程序的模式相同。

(当然,Steve's answer关于使用正确的驱动名称也适用。)

关于c# - 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地机器(服务器)上注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20411366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com