服务器执行失败(来自HRESULT的异常:0x80080005(CO_E_SERVER_EXEC_FAILURE))

Tam*_*nut 30 c# excel interop xls excel-interop

我试图使用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);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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...
Run Code Online (Sandbox Code Playgroud)

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

我在登台服务器上尝试过的事情:

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

2)展开组件服务" - >"计算机" - >"我的电脑" - >"DCOM配置"

3)找到"Microsoft Excel应用程序".

4)打开"属性"对话框的权限

5)点击"安全"标签,

6)"启动和激活权限,配置权限,添加权限 - 在管理员用户(此用户),交互式用户和启动用户下运行身份

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

2. 更改了在我的本地计算机上将.xls文件从"Any CPU"转换为"x86"的项目的构建,并在服务器上发布了该库.

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

Vla*_*nov 27

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

打开属性,选择"标识"选项卡,然后选择交互式用户.

  • 仅当用户登录到服务器时才有效。 (7认同)
  • 如果没有人登录,这将产生错误。 (2认同)
  • 如果该路径中没有 _Microsoft Excel Application_ 条目怎么办? (2认同)

Kob*_*uek 12

我在别处找到了解决方案。

执行以下操作确实解决了我的问题:

使用 DCOMCNFG.exe。打开它并转到:组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置 -> Microsoft Excel 应用程序。打开属性,选择身份选项卡并选择交互式用户。

但是- 每隔几分钟就会出现问题!

经过数小时试图找出原因后,我注意到我的服务器有数百个打开的 WINWORD.EXE 进程。这引起了内存问题,其含铅的exception from hresult 0x80080005错误。

好吧,太愚蠢了,我忘记编写代码来关闭互操作应用程序。一旦我解决了这个问题,错误就消失了。

doc.Close(false);
Marshal.ReleaseComObject(doc);
word.Quit();
Marshal.ReleaseComObject(word);
Run Code Online (Sandbox Code Playgroud)


Chi*_*gMM 5

我发现这篇文章深入讨论了这个问题。如果有帮助,可能由于以下原因而发生错误“ 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

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