"检索组件的COM类工厂....错误:80070005访问被拒绝." (HRESULT异常:0x80070005(E_ACCESSDENIED))

Ram*_*Ram 27 asp.net iis excel

我刚刚创建了一个简单的应用程序并托管在IIS6.0中.在代码中我只是实例化excel对象.

using excel = Microsoft.Office.Interop.Excel.Application;

namespace TestHosting
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            excel excelObj=new Microsoft.Office.Interop.Excel.Application();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误

 "Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied." (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
Run Code Online (Sandbox Code Playgroud)

系统配置:

Windows server 2008,64位企业版. 服务包2

我尝试了在互联网上找到的许多可能的解决方案,但它们都没有为我工作.

我试过的一些解决方案如下

1)在路径"C:\ Windows\SysWOW64\config\systemprofile"下创建桌面应用程序2)在DCOMCNFG中为Microsfot.EXcelApplicaiton设置完全权限/控制3)在任务管理器中杀死所有excel实例

请帮助我这方面,这只是示例应用程序,但在我的原始应用程序主要是从/向Excel读取和写入数据.

bot*_*bot 42

  1. 确保在服务器上安装了Office运行时.
  2. 如果您使用的是Windows Server 2008,那么使用office interops是一个长期配置,以下是步骤.

更好的是转移到Open XML,或者您可以配置如下

  • 安装MS Office Pro最新版(我使用的是2010专业版)
  • 创建用户ExcelUser.使用管理员组分配WordUser
  • 转到计算机 - >管理
  • 使用以下选项添加用户
  • 用户选项密码永不过期
  • 密码无法更改

Com +配置

  • 转到"控制面板" - >"管理员" - >"组件服务" - >"DCOM配置"
  • 打开Microsoft Word 97 - 2003属性
  • 常规 - >身份验证级别:无
  • 安全性 - >自定义所有3个权限以允许所有人
  • 身份 - >此用户 - >使用ExcelUser /密码
  • 启动Excel应用程序以确保一切正常

3.在DCOM配置中更改Microsoft Excel Application的安全设置.

控制面板 - >管理工具 - >组件服务 - >计算机 - > myComputer - > DCOM配置 - > Microsoft Excel应用程序.

右键单击以获取属性对话框.转到"安全"选项卡并自定义权限

请参阅此处的帖子:创建Excel对象时出错,使用COM在WCF中进行Excel操作

  • 此解决方案不适用于Office 2013 (2认同)
  • 谢谢它对我有用。我试图创建 excel 所以我正在设置 **Controlpanel --> 管理工具-->Component Services -->computers --> myComputer -->DCOM Config --> Microsoft Excel Application** 但我必须配置**Microsoft Word 97 - 2003 属性** 也。谁能告诉我这是为什么? (2认同)
  • 安装了Office 365 Business的Windows Server 2012 R2上的DCOM Config下没有Microsoft Word 97 - 2003 (2认同)
  • 让它工作,但浪费了一天,学会不再使用 Microsoft.Office.Interop.Excel,我正在切换到第三方库 (2认同)

Lui*_*gio 33

有时,您创建新的应用程序池,无法通过DCOMCNFG解决它.然后还有另一种方法:

将应用程序池的标识(模型名称)设置为LocalSystem.

我不知道根本原因,但它一次解决了我的问题.

  • 这允许应用程序以更高的权限运行,并且在大多数情况下将轻松解决问题.该答案的答案为+1.但是,请记住,在具有高级用户权限的帐户下运行应用程序池是一种严重的安全风险**.关于此的更多信息[在MSDN上](https://technet.microsoft.com/nl-nl/library/cc771170(v = ws.10).aspx).因此,如果您对风险感到满意并知道可能产生的影响,我建议只更改身份. (5认同)
  • 如果一个天才(以你的形式)没有出生,我会真的自杀了...向你致敬...你拯救了我...... (3认同)

dot*_*lop 5

  1. 授予IIS用户或组用户读/写权限

  2. 开始 -> 运行 -> inetmgr

    为您的默认网站启用 ASP.NET 身份验证

3. 对于 64 位 (x64),创建此文件夹:C:\Windows\SysWOW64\config\systemprofile\Desktop

对于 32 位 (x86),创建此文件夹:C:\Windows\System32\config\systemprofile\Desktop

Windows 服务如果在系统配置文件下运行,则需要桌面文件夹。此文件夹是在 XP 和较旧的 Windows Server 版本上自动创建的,但在 Vista 和 Windows 2008 Server 上则不会。


Isa*_*Bok 5

就我个人而言,我运行了以下具体步骤:

\n* 安装互操作程序集:您可以从 Microsoft 网站安装https://www.microsoft.com/en-us/download/details.aspx?id=3508&tduid=(09cd06700e5e2553aa540650ec905f71 )(256380)(2459594)(TnL5HPStwNw-yuTjfb1FeDiXvvZxhh.RQ)()

\n* 检查程序集版本:检查开发和生产计算机上程序集的版本。程序集将位于 GAC 中,在 widows 7 中,此文件夹为 %windir%\\ assembly。

\n* 创建桌面文件夹:该服务使用系统配置文件下的桌面文件夹,因此您需要创建此文件夹(如果不存在),这里是该文件夹的位置:\n对于 64 位应用程序:C:\\Windows\\SysWOW64 \\config\\systemprofile\\Desktop\n对于 32 位应用程序:C:\\Windows\\System32\\config\\systemprofile\\Desktop

\n* 添加 DCOM 用户权限:
\n---启动运行窗口并输入“dcomcnfg”。
\n---展开组件服务 \xe2\x80\x93> 计算机 \xe2\x80\x93> 我的电脑 \xe2\x80\x93> DCOM 配置。
\n---查找 Microsoft Excel 应用程序。右键单击它并选择属性,然后选择安全选项卡。
\n---选择“启动和激活权限”和“访问权限”下的“自定义”单选按钮,然后单击两者的“编辑”按钮来添加用户,如下所示。
\n---------单击“添加”按钮和用户“IIS_IUSRS”和“NETWORK SERVICE”并授予他们完全权限。
\n---转到“身份”选项卡并选择“交互式用户”选项。
\n---单击应用并确定。

\n


小智 5

回复太迟了.但是,如果这有助于仍然面临问题的人.我得到了这个修复:

→在专用池上设置站点而不是共享池.

→启用32位应用程序支持.

→将应用程序池的标识设置为LocalSystem.