2015-10-15 68 views
0

我們的Web服務器上有一個WCF應用程序。此應用程序中的一種服務方法會創建一個包含數據的Excel XLS文件,並將該文件放置在目錄中,以便用戶稍後可以下載文件。無法在Web服務器上創建XLS文件

我們的問題是,當這個應用程序嘗試創建Excel對象時,我們會收到此錯誤:創建Excel幫助器工作簿和應用程序時出錯:檢索具有CLSID的組件的COM類工廠{00024500-0000-0000-C000 -000000000046} 由於以下錯誤而失敗:8000401a服務器進程無法啓動,因爲配置的標識不正確。檢查用戶名和密碼。

這是導致錯誤的行:

使用EX =的Microsoft.Office.Interop.Excel; EX.Application Application = new EX.Application(); //導致錯誤

我做了一些研究,我試過的是進入DCOMCNFG - 計算機 - 我的電腦 - DCOM配置並右鍵單擊「Microsoft Excel預覽器」 - 屬性 - 安全性,然後添加幾個組和用戶以有本地啓動,本地激活等...

但這沒有幫助。一些文章說選擇「Microsoft Excel應用程序」。但是,我只在我的DCOM配置中看到「Microsoft Excel預覽器」。

Excel安裝在此服務器上,但仍存在上述問題。

奇怪的是,如果我遠程進入服務器,然後讓我的PC上的客戶端(瀏覽器)調用服務方法來創建XLS,這可以毫無問題地工作。

我需要做些什麼來解決這個問題?

+0

你檢查IIS池用戶的屬性,有關負載完整的個人資料,等等? – Caveman

+0

我將App Pool'Load User Profile'更改爲True,這是False。重新啓動應用程序池,但我們仍然遇到錯誤。 – Jerry

回答

1

您可以通過將IIS AppPool Identity設置爲具有交互式登錄權限的用戶來嘗試進行此項工作。互操作程序集實際上是通過在服務器上啓動Excel實例並與之通信來執行工作來實現的。

這就是說,以前走了這條路,這是一個不好的解決方案。是你要面對的挑戰如下:

  • 問題與DCOM權限是難以診斷和解決(你正在運行到現在這樣)
  • Excel的進程可以催生了服務器上,一半的時間因此您的應用程序必須足夠聰明才能殺死錯誤的Excel進程,或者事實上您的應用程序會像瘋狂一樣泄漏內存
  • 它不受Microsoft支持或推薦
  • 辦公室的設計並沒有考慮服務器端的安全考慮因素

更多詳情參見以下內容:

https://support.microsoft.com/en-us/kb/257757

相關問題