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

 蕊蕊宝宝妈妈_534 发布于 2023-02-12 16:01

我知道这个问题有十几个答案和帖子,但没有什么对我有用.

我有我的MVC 5应用程序,我将它部署到IIS 7.5到我的服务器.应用程序运行良好,一切正常,直到我转到Action,我使用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.b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +12
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +139
System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3c() +112
System.Web.Mvc.Async.<>c__DisplayClass45.b__3e() +452
System.Web.Mvc.Async.<>c__DisplayClass30.b__2f(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.<>c__DisplayClass28.b__19() +37
System.Web.Mvc.Async.<>c__DisplayClass1e.b__1b(IAsyncResult asyncResult) +241
System.Web.Mvc.Controller.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.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

我在网上找到了几个答案,我做了以下几点:

    安装Microsoft Access数据库引擎2010可再发行组件

    安装2007 Office System驱动程序:数据连接组件

我试过这个:

    在解决方案资源管理器中,右键单击项目,然后单击"属性"

    单击"生成"选项卡

    将平台目标从:任何CPU更改为x86 | 任何CPU到x64

    重新构建您的解决方案

有什么建议?

2 个回答
  • 没有

    Microsoft.ACE.OLEDB.4.0
    

    Microsoft.ACE.OLEDB.12.0 
    

    要么

    Microsoft.JET.OLEDB.4.0
    

    当然,应谨慎应用有关32位和64位的通常规则

    看到这个答案

    因此,您需要安装可从此处下载的Access Database Engine可再发行组件.但是您应该小心下载正确的版本(32位或64位),具体取决于目标平台选择构建您的应用程序.(AnyCPU,x64,x86).

    当然,如果您的服务器安装了Office,那么您已经安装了ACE,但它可能适用于不同的平台,您的应用程序需要进行相同的编译.(例如,Office 32位然后是ACE 32位,你需要为x86编译你的应用程序)

    2023-02-12 16:03 回答
  • 这可能是一个小问题,但它不是关于Build属性中的位数.

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

      您只能安装其中一个.

      如果安装x86版本,则只有x86应用程序可以使用它.如果安装x64版本,则只有x64应用程序可以使用它.(是的,这很愚蠢.)

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

    (当然,史蒂夫关于使用正确的驱动程序名称的答案也适用.)

    2023-02-12 16:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有