天天看點

.net伺服器釋出應用程式COM類工廠出錯

.net應用程式釋出以後,運作時,出錯(引用excel的dll檔案):

檢索 COM 類工廠中 CLSID 為 {000209FF-0000-0000-C000-000000000046} 的元件時失敗,原因是出現以下錯誤: 80070005。基本上.net導出excel檔案,都需要如此配置一下,不配置有的時候沒錯,而配置後基本應該不會出錯。

解決方法一:

具體配置方法如下:1:在伺服器上安裝office的Excel軟體.

2:在"開始"->"運作"中輸入dcomcnfg.exe啟動"元件服務" 

3:依次輕按兩下"元件服務"->"計算機"->"我的電腦"->"DCOM配置"

4:在"DCOM配置"中找到"Microsoft  Excel 應用程式",在它上面點選右鍵,然後點選"屬性",彈出"Microsoft Excel 應用程式屬性"對話框 

5:點選"辨別"标簽,選擇"互動式使用者" 

6:點選"安全"标簽,在"啟動和激活權限"上點選"自定義",然後點選對應的"編輯"按鈕,在彈出的"安全性"對話框中填加一個"NETWORK  SERVICE"使用者(注意要選擇本計算機名),并給它賦予"本地啟動"和"本地激活"權限. 

7:依然是"安全"标簽,在"通路權限"上點選"自定義",然後點選"編輯",在彈出的"安全性"對話框中也填加一個"NETWORK  SERVICE"使用者,然後賦予"本地通路"權限. 

8.如果互動式使用者設定後出現錯誤8000401a,可取消互動式使用者,指定為administratr,可暫時解決此問題。進一步的解決方式還有待探讨。 

9.采用第8點的設定後,打開Excel可能會出現“無法使用對象引用或連結”,并且不能進行單元格粘貼。原因不明,取消設定後即可消失。

另外說明:光按以上設定并不能完全保證不出問題,因為調用OFFICE的操作可能涉及其他的系統資源,很可能依然權限不夠而導緻問題,隻是設定EXCEL應用程式後,還是可能會報80070005的錯誤,最保險的是應該在dcomcnfg中選中我的電腦然後右鍵屬性->com安全,将裡面的通路權限,啟動和激活權限全都編輯預設,在當中加上network service(iis 5.0的話,要加的是asp.net使用者),并如前面對networkservice設定上相同的權限,這樣基本上能保證不會再出什麼問題。

以上為基本出路方法,但是我也遇到過應用以上方法還是報錯的情況,我的環境是windows2003 + office2003+office2007,在測試伺服器上都可以導出無任何問題!但是更新了正式環境就是報錯,權限都設定了還是報錯,因為我的測試伺服器是預設office啟動的,是以我懷疑是office版本環境問題!于是我解除安裝了office2007,馬上測試ok了,但是重新開機伺服器後就産生了have not been Pre-compiled錯誤,導出頁面都無法打開了,于是我又重新安裝了office2007,頁面可以打開了,但是導出excel時又開始報錯!我又把所有的權限重新設定一遍,問題依舊!後來發現兩個伺服器預設打開excel的程式不一樣,測試環境是預設office2003打開,正式環境是office2007打開,于是我在正式環境重新注冊office2003,使其同樣也是預設office2003打開程式,靠!問題終于解決了!!!

注冊方法 執行    開始----運作----輸入excel2003的安裝路徑,例如 "C:\Program Files\Microsoft Office\OFFICE11\excel.exe" /regserver    注意/符号前面有一個空格,其中"C:\Program Files\Microsoft Office\OFFICE11\excel.exe" 是excel2003的安裝程式的路徑,參數regserver表示注冊的意思!

運作後,會啟動Office 2003的安裝程式,進行修複,重新注冊。

excel2007為預設的啟動程式的方法類同,可以執行   開始----運作----"D:\Program Files\Microsoft Office\Office12\excel.exe" /regserver

           綜上所述,再遇到Excel導出、導入問題時,先考慮權限問題,再考慮office的版本環境!如此基本能夠解決這些問題了

解決方法二:

在web.config中使用身份模拟,在<system.web>節中加入   <identity impersonate="true" userName="你的使用者名" password="密碼"/>

</system.web>方法二要注意userName="你的使用者名" ,這裡的使用者名是指登入windows的賬戶名[如果計算機加入了域,則取域的名稱+登入windows的賬戶名],密碼也是登入windows的密碼檢視計算機名:桌面的 我的電腦->屬性->計算機名 

原文轉載位址:

http://www.cnblogs.com/hfzsjz/p/3419402.html

繼續閱讀