![](/img/trans.png)
[英]The 'Provider=Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
[英]The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine (server)
我知道这个问题有很多答案和帖子,但对我来说没有任何用处。
我有我的 MVC 5 应用程序,我将它部署到 IIS 7.5 到我的服务器。 应用程序运行良好,一切正常,直到我 go 到我使用 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
我在 web 上找到了几个答案,并执行了以下操作:
我试过这个:
有什么建议么?
这可能是一个位数问题,但这与您的 Build 属性中的位数无关。
ACE 驱动程序有两个版本:x86 和 x64。
现在,您的 Web 应用程序是在 x86(32 位)还是 x64 模式下运行不是由您的构建设置决定,而是由您的应用程序池设置决定:在 IIS 管理器中选择应用程序池,转到属性/高级设置并验证启用 32 位应用程序的设置。 如果已设置,则您的应用程序以 x86 模式运行,否则以 x64 模式运行。 确保它与您安装 ACE 驱动程序的模式相同。
没有
Microsoft.ACE.OLEDB.4.0
有
Microsoft.ACE.OLEDB.12.0
或
Microsoft.JET.OLEDB.4.0
当然,关于 32bit 和 64bit 的通常规则应该小心应用
因此,您需要安装可 从此处下载的 Access 数据库引擎可再发行组件。 但是您应该小心下载正确的版本(32 位或 64 位),具体取决于选择构建您的应用程序的目标平台。 (任何CPU、x64、x86)。
当然,如果您的服务器安装了 Office,那么您已经安装了 ACE,但它可能适用于不同的平台,并且您的应用程序需要针对相同的平台进行编译。 (例如,Office 32bit 然后是 ACE 32bit,您需要为 x86 编译您的应用程序)
可能是 X86 或 X64 问题
你需要安装它:
2007 办公系统驱动程序:数据连接组件。( http://www.microsoft.com/en-us/download/details.aspx?id=23734 )
然后确保:
构建 -> 配置管理器 -> 主动解决方案平台 -> x64 http://www.codeproject.com/Tips/417397/OLEDB-Provider-is-Not-Registered-on-the-Local-Mach
您只需更改配置管理器。
步骤:
看起来您已经安装了 ACE 驱动程序,甚至更改应用程序池属性也会使应用程序工作。
但是您可能缺少系统的连接驱动程序
尝试从此链接安装它,它对我有用:
--- 在尝试下载 Microsoft Access DataEngine 等之后
我通过更改应用程序的应用程序轮询设置 >> 启用 32 位应用程序 (true) >> 并重新启动应用程序来解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.