檢索 COM 類工廠中 CLSID 為{00024500-0000-0000-C000-000000000046} 的元件時失敗,報錯誤 80070005

鴨脖發表於2014-06-21

寫的網站需要一個功能是:上傳excel檔案,然後解析excel檔案,並將excel檔案中的內容通過sqlbulkcopy功能匯入到資料庫中。通過使用ajax技術,我們不僅實現了功能,而且介面也美化的不錯。


但是由於測試都是在vs自帶的iis伺服器,所以我們的測試最初也都是在這個自帶的iis伺服器上進行。而這期間vs沒有報任何錯誤,也就是說,開發階段這功能是沒有問題的,但是當我們部署在伺服器上之後,它就不正常了,報的錯誤是檢索 COM 類工廠中 CLSID 為{00024500-0000-0000-C000-000000000046} 的元件時失敗,報錯誤80070005


這肯定不是程式碼的問題,因為如果是程式碼問題,那麼在除錯階段這個功能也不會正常,所以我覺得應該是許可權配置的問題。


通過我們查詢相關資料,通過如下步驟解決了這個問題:


1:在伺服器上安裝office的Excel軟體. 
2:在"開始"->"執行"中輸入dcomcnfg.exe啟動"元件服務" 
3:依次雙擊"元件服務"->"計算機"->"我的電腦"->"DCOM配置" 
4:在"DCOM配置"中找到"Microsoft Excel 應用程式",在它上面點選右鍵,然後點選"屬性",彈出"MicrosoftExcel 應用程式屬性"對話方塊 
5:點選"標識"標籤,選擇"互動式使用者" 
6:點選"安全"標籤,在"啟動和啟用許可權"上點選"自定義",然後點選對應的"編輯"按鈕,在彈出的"安全性"對話方塊中填加一個"NETWORKSERVICE"使用者,並給它賦予"本地啟動"和"本地啟用"許可權. 

7:依然是"安全"標籤,在"訪問許可權"上點選"自定義",然後點選"編輯",在彈出的"安全性"對話方塊中也填加一個"NETWORKSERVICE"使用者,然後賦予"本地訪問"許可權. 


通過上面的步驟,我們可以配置好Excel的DCOM許可權。(如果上述行不通,則編輯“我的電腦”的預設許可權,具體可以上網查詢)


DCOM許可權配置好之後,如果直接重啟iis並且訪問,則有可能出現檔案無法訪問或者檔案路徑不正確等異常。這是因為沒有為DCOM元件新增IUSR使用者許可權和EVERYONE使用者許可權。只需要把這兩個使用者名稱新增至DCOM中並且設定可訪問即可。


然後,我們重啟iis伺服器,並且重新生成專案,但是OleDbconnection又報了錯誤。這時只需要把應用程式池中的“啟用32位應用程式”設定為 true就可以正常執行了。

















相關文章