Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';微软.ACE.OLEDB.12.0';提供程序未在本地计算机(服务器)上注册_C#_Asp.net Mvc_Excel_Deployment_Oledb - Fatal编程技术网

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

C# ';微软.ACE.OLEDB.12.0';提供程序未在本地计算机(服务器)上注册,c#,asp.net-mvc,excel,deployment,oledb,C#,Asp.net Mvc,Excel,Deployment,Oledb,我知道这个问题有十几个答案和帖子,但没有一个适合我 我有我的MVC5应用程序,我将它部署到IIS7.5服务器上。应用程序运行良好,一切正常,直到我使用ACE.OLEDB进行操作 我得到了这个错误: [无效操作异常:未在本地计算机上注册'Microsoft.ACE.OLEDB.12.0'提供程序。] System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString构造、DataSourceWrapper和datas

我知道这个问题有十几个答案和帖子,但没有一个适合我

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

我得到了这个错误:

[无效操作异常:未在本地计算机上注册'Microsoft.ACE.OLEDB.12.0'提供程序。]
System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString构造、DataSourceWrapper和datasrcWrapper)+1785474
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection connection)+1802032
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions选项、DbConnectionPoolKey poolKey、Object poolGroupProviderInfo、DbConnectionPool池、DbConnectionOwningObject)+100
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection-owningConnection、DbConnectionPoolGroup-poolGroup、DbConnectionOptions-userOptions)+61
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection所有者连接、TaskCompletionSource`1重试、DbConnectionOptions用户选项、DbConnectionInternal oldConnection、DbConnectionInternal和connection)+964
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnectionOuterConnection,DbConnectionFactory connectionFactory,TaskCompletionSource`1重试,DbConnectionOptions用户选项)+6785863
System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)+27
System.Data.OleDb.OleDbConnection.Open()+47
c:\Users\alex.chakhau\Documents\Visual Studio 2013\Projects\QuickbookUploadFromElite3e\QuickbookUploadFromElite3e\QuickbookUploadFromElite3e\Controllers\HomeController.cs:75中的QuickbookUploadFromElite3e.Controllers.HomeController.Matters(字符串文件路径)
lambda_方法(闭包、控制器基、对象[])+127
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)+242
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)+39
System.Web.Mvc.Async.AsyncControllerActionInvoker.b_u36(IAsyncResult asyncResult,ActionInvoking 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__显示类45.b_3e()+452
System.Web.Mvc.Async.c__显示类30.b__2f(IAsyncResult asyncResult)+15
System.Web.Mvc.Async.c__显示类28.b__19()+37
System.Web.Mvc.Async.c__显示Class1E.b__1b(IAsyncResult asyncResult)+241
System.Web.Mvc.Controller.b_u1d(IAsyncResult asyncResult,ExecuteCorerate 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_uu4(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步骤,布尔值&同步完成)+288
我在网上找到了一些答案,我做了以下工作:

  • 安装
  • 安装
  • 我试过这个:

  • 在解决方案资源管理器中右键单击项目,然后单击属性
  • 单击“生成”选项卡
  • 将平台目标从:任意CPU更改为x86 |任意CPU更改为x64
  • 重新构建您的解决方案

  • 有什么建议吗?

    可能是X86或X64的问题

    您需要安装它:

    2007办公系统驱动程序:数据连接组件。()

    然后确保:

    构建->配置管理器->活动解决方案平台->x64 没有

    Microsoft.ACE.OLEDB.4.0
    

    Microsoft.ACE.OLEDB.12.0 
    

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

    因此,您需要安装Access数据库引擎可再发行。但是,根据构建应用程序所选择的目标平台,您应该小心下载正确的版本(32位或64位)。(任意CPU、x64、x86)


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

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

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

  • 您只能安装其中一个
  • 如果安装x86版本,则只有x86应用程序可以使用它。如果安装x64版本,则只有x64应用程序可以使用它。(是的,这很愚蠢。)
  • 现在,web应用程序是在x86(32位)模式下运行还是在x64模式下运行不是由生成设置决定的,而是由应用程序池的设置决定的:在IIS管理器中选择应用程序池,转到“属性/高级设置”并验证“启用32位应用程序”的设置。如果已设置,则应用程序在x86模式下运行,否则在x64模式下运行。确保该模式与安装ACE驱动程序的模式相同


    (当然,关于使用正确的驱动程序名也适用。)

    您只需更改配置管理器即可

    步骤:

  • 在解决方案资源管理器中右键单击项目名称
  • 选择配置管理器
  • 对话框打开后,将活动解决方案平台更改为新
  • 再次打开对话框,
    Microsoft.JET.OLEDB.4.0