一、故障環境
- Windows 2008
- .net 3.0
二、故障描述
呼叫excel元件生成excel文件時頁面報錯。報錯內容一大串,核心是“檢索COM類工廠中 CLSID為 {00024500-0000-0000-C000-000000000046}的元件時失敗,原因是出現以下錯誤: 80070005”。應該是WEB應用帳號許可權不足導致的。百度上同樣問題的解決方案超級多,但內容幾乎一樣,效果也幾乎一樣是沒什麼用。結合網文和實際應用折騰了半天終於解決,整理一下思路記錄在此,以備再查。
三、處理
- 開啟“元件服務”。有的文章說32位DCOM配置需要在執行中執行“comexp.msc -32”來啟動,但在此例項中怎麼開啟都是一樣的。
- 在“元件服務/計算機/我的電腦/DCOM配置”中找到“Microsoft Excel Application”或“Microsoft Excel 應用程式”,右鍵選單選“屬性”。在屬性皮膚裡切換到“標識”選擇“啟動使用者”,再切換到“安全”將專案應用程式池對應啟動帳號(或iis_wpg組) 分別新增到“啟動和啟用許可權”以及“訪問許可權”中,並給予所有許可權。確定並退出。
- 找到office安裝目錄,給excel.exe所在目錄新增應用程式池對應啟動帳號(或iis_wpg組)讀取及讀取執行許可權。
四、幾個小細節
- 很多網文都說在“元件服務”屬性皮膚的“標識”裡選擇“互動使用者”,事實上在此例項中是完全行不通的,必須要設為“啟動使用者”。
- 故障發生時在系統日誌裡可能會連帶報告
“應用程式-特定 許可權設定並未從地址 LocalHost(使用 LRPC) 使用 CLSID
{000C101C-0000-0000-C000-000000000046}
和 APPID
{000C101C-0000-0000-C000-000000000046}
向使用者XXXXXXXX授予對 COM 伺服器應用程式的 本地 啟用 許可權。此安全許可權可以使用元件服務管理工具進行修改。”
可以不處理。