如果pipe理员用户注销,服务器上的Excel应用程序无法工作

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

System.Runtime.InteropServices.COMException (0x8000401A) 

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

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

“Microsoft目前不推荐,也不支持从任何无人值守的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)中自动化Microsoft Office应用程序,因为Office可能performance出不稳定的行为, /或Office在此环境中运行时出现死锁。“ 有关详细信息,请参阅此页面: Office支持 : Office服务器端自动化的注意事项

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

  • 打开组件服务(开始 – >运行 – > MMC comexp.msc / 32)
  • 查找组件服务 – >计算机 – >我的电脑 – > DCOMconfiguration – > Microsoft Excel应用程序
  • 右键单击,select属性
  • 转到“标识”选项卡并select“交互式用户”
  • 如果这不起作用,您可以尝试手动input用户凭据

当然,你也可以切换到另一个框架来读取文件。 SO:如何在不使用Microsoft.Office.Interop.Excel库的情况下读取C#中的excel文件

2008r2移植到2012后,我遇到了同样的问题。 我的解决scheme

  • 查找组件服务 – >计算机 – >我的电脑 – > DCOMconfiguration – > Microsoft Excel应用程序
  • 右键单击,select属性
  • 转到“标识”选项卡并select“此用户(input用户和密码)