C# Access和Excel在Microsoft.ACE.OLEDB.12.0的体系结构上有什么不同吗?IIS是否与它的注册方式有关?

C# Access和Excel在Microsoft.ACE.OLEDB.12.0的体系结构上有什么不同吗?IIS是否与它的注册方式有关?,c#,asp.net,ms-access-2010,excel-2010,oledbconnection,C#,Asp.net,Ms Access 2010,Excel 2010,Oledbconnection,我现在正在这里碰壁。我甚至都不知道该去哪里找,也不知道该找什么。 我正在开发一个应用程序,它可以为Access和Excel实现一些办公自动化 以下是每次尝试解决issee后的问题和post问题。 从Visual Studio运行时,第一个解决方案适用于Access和Excel。当它发布到IIS时,它就是不工作 Microsoft.ACE.OLEDB.12.0提供给Access和Excel的版本有什么不同吗?还是这背后还有一个大问题 当前架构: 机器–x64 Windows 2k8 r2 Web应

我现在正在这里碰壁。我甚至都不知道该去哪里找,也不知道该找什么。 我正在开发一个应用程序,它可以为Access和Excel实现一些办公自动化

以下是每次尝试解决issee后的问题和post问题。 从Visual Studio运行时,第一个解决方案适用于Access和Excel。当它发布到IIS时,它就是不工作

Microsoft.ACE.OLEDB.12.0提供给Access和Excel的版本有什么不同吗?还是这背后还有一个大问题

当前架构:
机器–x64 Windows 2k8 r2
Web应用程序–x64
IIS 7.0
AccessDatabaseEngine–x64
编辑-Microsoft Office 2010 x86
应用池:.Net 4.0/Integrated/Enable 32位=>False/Identity=>Admin(用户)

错误:

上载Access数据库不工作-Microsoft.Oledb.ACE.12.0连接冻结 Excel上载不工作-Microsoft.Oledb.ACE.12.0连接冻结

尝试的第一个解决方案:
使用“任意CPU”构建的应用程序
卸载AccessDatabaseEngine–x64
修复Microsoft Office 2010 x64

部署后:
Access数据库作品上传

错误:
Excel上载不起作用-Microsoft.Oledb.ACE.12.0提供程序未在本地计算机上注册

尝试了2st解决方案:
使用“x86”构建的应用程序
修复Microsoft Office 2010 x64
AppPool-启用32位=>True

部署后:
在w3wp.exe中点击URL时–JIT调试器在0x108d8d10处弹出-未处理异常:0xC0000005:访问冲突。

尝试了第三种解决方案:
同时安装x86和x64 AccessDatabaseEngine

部署后:
Access数据库的上载不起作用--
由于以下错误,检索CLSID为{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}的组件的COM类工厂失败:80070005访问被拒绝。(来自HRESULT的异常:0x80070005(E_ACCESSDENIED))

上传Excel作品

第四种解决方案: 在此处发布问题并等待答复。 请,有人在这里照亮我,只是一个让我远离黑暗的提示。

读取access/excel的代码如下: Excel:

 string csvCONSTRSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<FILENAME>;Extended Properties=\"text;HDR=Yes;\";";
        using (OleDbConnection objConnection = new OleDbConnection(CONSTRSTRING.Replace("<FILENAME>", fullFileName)))
        {
            DataSet dsImport = new DataSet();
            objConnection.Open();
            DataTable dtSchema = objConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            if ((null == dtSchema) || (dtSchema.Rows.Count <= 0))
            {
                throw new Exception("Excel doesn't contain any readable table/tab");
            }
            new OleDbDataAdapter("SELECT * FROM [" + sheetName + "]", objConnection).Fill(dsImport);
            objConnection.Close();

            return dsImport.Tables[0];
        }

在IIS上下文中的服务器上运行Office应用程序充满了问题。在x64位系统上问题更大。有权限问题、COM问题、DCOM问题等等。我会集中精力让Access正常工作,然后尝试Excel。但是我想看看你是否能找到一个不依赖于Office的解决方案。如果我把我的解决方案放到服务器上,并在服务器上的visual studio中运行它,它就会工作。我不明白在IIS或它的配置中需要做什么才能让它工作。它在不同的用户环境下运行。在IIS应用程序池下运行的用户是用于访问应用程序和文件系统的标识。您需要授予该用户必要的权限。该用户是AppPool中使用的管理员。这是一个开始。我点击事件日志,查看生成了哪些错误。还可以尝试以该用户的身份登录并在中运行应用程序。很有可能,您还必须为该用户设置DCOM对office应用程序的激活。
string sAccessConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + ";Persist Security Info=False;";
using (System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(sAccessConnection))
{
    con.Open();
    //doing stuffs
    con.Close();
}