[IIS] Windows Service 網站執行Office錯誤:COM Class Factory 失敗: 80070005

  • 4408
  • 0
  • IIS
  • 2020-07-24

在網站裡需要做一個Word或Excel套版與匯出等功能時

出現

CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005

 

利用Microsoft.Office.Interop.Word或是Microsoft.Office.Interop.Excel 元件時

在掛上IIS常常會出現元件權限不足的錯誤訊息

這邊展示在Windows Servcie 2012 R2、Windows Service 2008 二種版本下的IIS 6.0 環境下如何排解上述的錯誤訊息

Step1.先在Service上灌相對應位元版本的Office(32位元的系統就灌32位元的Office....)

Step2.開啟「控制台」>「系統管理工具」>「元件服務」>「DCOM設定」(從主控台根目錄開始不斷的下一層下一層就找到DCOM設定)

Step3.找到Microsoft Word(Excel)字眼,確認應用程式識別碼是與錯誤訊息上的CLSID是一樣的,點擊右鍵內容

Step4.Tag 安全性,前二個Black皆選擇「自訂」並編輯,新增權限Everyone,設定可完全控制。其他Black不變動

Step5.Tag 識別身份,選擇第一個「互動使用者」或是「使用下列使用者」輸入你想要給哪個權限的角色使用

*如果選擇「互動使用者」的話如果沒有人登入那台Server將依然會出現錯誤訊息

*如果選擇「使用下列使用者」的話,IIS上整個應用程式的權限要開啟這個使用者的完全控制才能使用

Step6.重跑一次你的網站,應該可以成功了!

 

 

其他突發狀況:

1.「控制台」>「系統管理工具」>「元件服務」>「DCOM設定」找不到Word或Excel

這可能是系統裝的是64位元版本,但Office裝成32位元的版本,一種位元版本裝錯的狀態下

Step1.執行「MMC /32」 開啟32位元的元件服務

Step2.開啟「新增或移除嵌入式管理單元」,加入「元件服務」

Step3.回到原來的「元件服務」畫面,重新整理「DCOM設定」,就會找到Office的元件了

Step4.開始設定元件的安全性與識別身份

2.上述都設定了,為什麼還是不能使用

在IIS的應用程式按右鍵選擇「編輯權限」

加入Everyone的權限並可完全控制

參考資訊:

[COM]為什麼Office在DCOM設定中找不到

解決Win2008 Asp.NET使用Word.Selection會有System.NullReferenceException的問題

[ASP.net/MSSQL] 讀寫Office Excel之前要做的相關設定