我有一个ASP.NET应用程序,它使用Microsoft intrope程序集来读取,编写和修改Excel文件,它在服务器计算机上使用Excel 2013。如果我以管理员身份登录到服务器计算机,但是当我注销时,应用程序无法初始化Excel应用程序,应用程序正常工作。这是例外。
System.Runtime.InteropServices.COMException (0x8000401A)
应用程序在带有MS Excel 2013 32位的Windows Server 2008R2上运行我无法弄清楚此行为的原因。这是关于COM对象的安全选项还是与IIS权限有关?
答案 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
如果您仍想保留互操作服务,请尝试将其更改为以交互式用户身份运行:
当然,您也可以切换到另一个框架来读取文件。 SO: How to read an excel file in C# without using Microsoft.Office.Interop.Excel libraries
答案 1 :(得分:0)
从2008r2
迁移到2012
后,我遇到了同样的问题。我的解决方案: