如果管理员用户已注销,则Excel上的应用程序无法正常工作

时间:2015-05-07 06:22:54

标签: excel iis-7 windows-server-2008-r2 excel-interop

我有一个ASP.NET应用程序,它使用Microsoft intrope程序集来读取,编写和修改Excel文件,它在服务器计算机上使用Excel 2013。如果我以管理员身份登录到服务器计算机,但是当我注销时,应用程序无法初始化Excel应用程序,应用程序正常工作。这是例外。

System.Runtime.InteropServices.COMException (0x8000401A)

应用程序在带有MS Excel 2013 32位的Windows Server 2008R2上运行我无法弄清楚此行为的原因。这是关于COM对象的安全选项还是与IIS权限有关?

2 个答案:

答案 0 :(得分:3)

InteropServices类打开一个(不可见的)Excel实例以完成其工作。 Excel无法作为Windows服务运行,需要由已登录的用户进行实例化。

“Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为在此环境中运行Office时,Office可能会出现不稳定的行为和/或死锁。“ 有关详细信息,请参阅此页面:Office support: Considerations for server-side Automation of Office

如果您仍想保留互操作服务,请尝试将其更改为以交互式用户身份运行:

  • 打开组件服务(开始 - >运行 - > MMC comexp.msc / 32)
  • 查找组件服务 - >计算机 - >我的电脑 - > DCOM配置 - > Microsoft Excel应用程序
  • 右键单击,选择属性
  • 转到“标识”标签,然后选择“交互式用户”
  • 如果此方法无效,您可以尝试手动输入用户凭据

当然,您也可以切换到另一个框架来读取文件。 SO: How to read an excel file in C# without using Microsoft.Office.Interop.Excel libraries

答案 1 :(得分:0)

2008r2迁移到2012后,我遇到了同样的问题。我的解决方案:

  • 查找组件服务 - >计算机 - >我的电脑 - > DCOM配置 - > Microsoft Excel应用程序
  • 右键单击,选择属性
  • 转到“身份”标签,然后选择“此用户(输入用户和密码)