“Retrieving the COM class factory for component… error: 80070005 Access is denied.” (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)),怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我刚刚创建了一个简单的应用程序,并在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();
        }
    }
}

它让我犯了以下错误

 "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)).

怎么解决?

提问于
用户回答回答于
  1. 确保服务器上安装了Office运行时。
  2. 如果您使用的是WindowsServer 2008,那么使用OfficeInterop是一种宽松的配置,下面是步骤。

更好的方法是移动到OpenXML,或者您可以按照下面的方式进行配置

  • 安装MSOfficePro最新版本(我使用了2010 Pro)
  • 创建用户ExcelUser。分配管理员组的WordUser
  • 去电脑->管理
  • 添加具有以下选项的用户
  • 用户选项密码永不过期
  • 密码不能更改

COM+配置

  • 转到控制面板->Administrator->Component Services->DCOM Config
  • 打开MicrosoftWord 97-2003属性
  • 一般->身份验证级别:无
  • 安全性->自定义所有3种权限以允许每个人
  • 标识->此用户->使用ExcelUser/密码
  • 启动ExcelApp以确保一切正常

3.改变DCOM Config中MicrosoftExcel应用程序的安全设置。

控件面板->管理工具->组件服务->计算机->MyComputer->DCOM Config->Microsoft Excel Application。

右击获取属性对话框。转到Security选项卡并自定义权限。

用户回答回答于

设置Identity(模型名)的应用程序池LocalSystem

扫码关注云+社区