服务器执行失败(HRESULTexception:0x80080005(CO_E_SERVER_EXEC_FAILURE))

我正在尝试使用Microsoft.Office.Interop.Excel.Workbook类将.xls文件转换为服务器端上的.xlsx文件,如下所示:

  workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

我得到以下错误:

 Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at CALLING_METHOD_IN_MY_LIBRARY_HERE... 

问题是仅在登台服务器上发生此错误。 在我的本地机器上,它工作正常。

我在登台服务器上试过的东西:

  1. ** 1)运行dcomcnfg打开组件服务

2)展开组件服务“ – >”计算机“ – >”我的电脑“ – >”DCOMconfiguration“

3)find“Microsoft Excel应用程序”。

4)右键打开属性对话框

5)点击“安全”选项卡,

6)“启动和激活权限,configuration权限,增加了权限 – 在Adminstrator用户(本用户),交互式用户和启动用户

7)。 启动和激活权限+访问权限+configuration权限=>添加完全控制的IIS_IUSRS +networking服务**

2. 在本地机器上更改了将.xls文件从“Any CPU”转换为“x86”的项目的构build,并将该库发布到服务器上。

有人想出了如何解决这个问题? 我正在努力解决这个问题2天了。

使用DCOMCNFG.exe。 打开它并转到: 组件服务 – >计算机 – >我的电脑 – > DCOMconfiguration – > Microsoft Excel应用程序

打开属性,select标识选项卡,然后select交互式用户。

同样的问题通过“允许桌面交互”来解决。 (在“login”选项卡上的tomcat6wconfiguration工具中)

尝试在workBook.open和workBook.SaveAs两个方法之后添加Thread.Sleep方法,比如Thread.Sleep(2000)2秒。 如果您的Excel文件有很多格式,请尝试延长几秒钟。