2014-02-27 646 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

相關問題