2014-02-27 3263 views
17

我想一个.xls文件转换为使用Microsoft.Office.Interop.Excel.Workbook类服务器端的.xlsx文件如下:服务器执行失败(异常来自HRESULT:0x80080005(CO_E_SERVER_EXEC_FAILURE))

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)展开组件服务 “ - >” 计算机 “ - >”我的电脑 “ - >” DCOM配置“

3)找到 ”Microsoft Excel应用程序“

4)右键打开日。 Ë属性对话框

5)单击“安全”选项卡上,

6)“启动和激活权限,配置权限,必须添加权限 - 身份下管理员联系用户(该用户),交互式用户和运行启动用户

7)。启动和激活权限+访问权限+配置权限=>添加IIS_IUSRS +网络服务具有完全控制研究**

2. 改变了.xls文件,从“任何CPU”,以转换项目的构建“86 “在我的本地机器上,并在服务器上发布这个库。

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

+0

我知道这看起来很傻,但你有没有在服务器上创先争优正确安装? –

+0

是的,我在服务器上安装了Excel。 –

+0

您是否找到解决方案? –

回答

0

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

-3

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

+0

没有可用于打开和保存Excel文件的回调函数。我有问题保存文件。 MS支持团队为我提供了保存后添加睡眠的暗示。这个对我有用。 –

8

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

打开属性,选择标识选项卡并选择交互式用户。

-1

我发现这篇文章,其在深度更多地谈论这个问题,如果这会有所帮助, 错误“80080005服务器执行失败(异常来自HRESULT:0x80080005(CO_E_SERVER_EXEC_FAILURE))”由于以下原因,可能会发生:

  1. 该机器的CPU负载很高,并且该过程需要很长时间才能启动,并且在120秒内未能执行小于 的CoRegisterClassObjects()。
  2. COM服务器没有注册正确的类ID。
  3. COM服务器当前正在停止,CoCreateInstance和COM服务器停止部分之间存在争用条件 。
  4. 有在COM服务器启动 方式的安全问题(此页似乎暗示拼写错误的密码或缺少的 “登录为批处理作业”特权“运行方式..” COM服务器,但 反正我建议重新验证此信息为您 具体配置)

https://blogs.msdn.microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/

+0

欢迎您访问解决方案的链接,但请确保您的答案在没有它的情况下很有用:[添加链接的上下文](// meta.stackexchange.com/a/8259),以便您的同行用户了解它是什么以及为什么它在那里,然后引用您链接的页面中最相关的部分,以防目标页面不可用。 [解答只是一个链接可能会被删除。](// stackoverflow.com/help/deleted-answers) – paper1111

+0

@ paper1111我已经编辑了我的答案为什么倒票给了足够的时间来改进答案虽然我欢迎你建议我正在处理类似问题,并直接从Microsoft技术支持部门找到有关此问题的信息。如果某人标记了答案,则用户不会重视答案中分享的答案或链接。 – ChiragMM

相关问题