1、故障環境
- Windows 2008
- .net 3.0
2、故障描述
調用excel組件生成excel文檔時頁面報錯。報錯內容一大串,核心是「檢索COM類工廠中 CLSID爲 {00024500-0000-0000-C000-000000000046}的組件時失敗,緣由是出現如下錯誤: 80070005」。應該是WEB應用賬號權限不足致使的。百度上一樣問題的解決方案超級多,但內容幾乎同樣,效果也幾乎同樣是沒什麼用。結合網文和實際應用折騰了半天終於解決,整理一下思路記錄在此,以備再查。安全
3、處理
- 打開「組件服務」。有的文章說32位DCOM配置須要在運行中執行「comexp.msc -32」來啓動,但在此實例中怎麼打開都是同樣的。
- 在「組件服務/計算機/個人電腦/DCOM配置」中找到「Microsoft Excel Application」或「Microsoft Excel 應用程序」,右鍵菜單選「屬性」。在屬性面板裏切換到「標識」選擇「啓動用戶」,再切換到「安全」將項目應用程序池對應啓動賬號(或iis_wpg組) 分別添加到「啓動和激活權限」以及「訪問權限」中,並給予全部權限。肯定並退出。
- 找到office安裝目錄,給excel.exe所在目錄添加應用程序池對應啓動賬號(或iis_wpg組)讀取及讀取執行權限。
4、幾個小細節
- 不少網文都說在「組件服務」屬性面板的「標識」裏選擇「交互用戶」,事實上在此實例中是徹底行不通的,必需要設爲「啓動用戶」。
- 故障發生時在系統日誌裏可能會連帶報告
「應用程序-特定 權限設置並未從地址 LocalHost(使用 LRPC) 使用 CLSID
{000C101C-0000-0000-C000-000000000046}
和 APPID
{000C101C-0000-0000-C000-000000000046}
向用戶XXXXXXXX授予對 COM 服務器應用程序的 本地 激活 權限。此安全權限可使用組件服務管理工具進行修改。」服務器
能夠不處理。工具