最近開始專做web開發,總是遇到比較怪的問題,現在把其中一件寫出來(對iis瞭解比較少,需要提高)
C#寫的一個匯出到excel的程式,發行到iis上就會出錯,今天查出了問題:具體解決辦法如下:(摘抄自net,自己親身測試過可行)
文章1: 檢索 COM 類別工廠中 CLSID 為{00024500-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005。具體解決方案如下:1:在伺服器上安裝office的Excel軟體.2:在"開始"->"運行"中輸入dcomcnfg.exe啟動"元件服務"3:依次雙擊"元件服務"->"電腦"->"我的電腦"->"DCOM配置"4:在"DCOM配置"中找到"Microsoft Excel 應用程式",在它上面點擊右鍵,然後點擊"屬性",彈出"Microsoft Excel 應用程式屬性"對話方塊5:點擊"標識"標籤,選擇"互動式使用者"6:點擊"安全"標籤,在"啟動和啟用許可權"上點擊"自訂",然後點擊對應的"編輯"按鈕,在彈出的"安全性"對話方塊中填加一個"NETWORK SERVICE"使用者(注意要選擇本電腦名稱),並給它賦予"本地啟動"和"本地啟用"許可權.7:依然是"安全"標籤,在"存取權限"上點擊"自訂",然後點擊"編輯",在彈出的"安全性"對話方塊中也填加一個"NETWORK SERVICE"使用者,然後賦予"本地訪問"許可權.這樣,我們便配置好了相應的Excel的DCOM許可權.注意:這是在WIN2003上配置的,在2000上,可能是配置ASPNET使用者由於EXCEL是在伺服器上開啟的,所以應該寫一個把匯出資料儲存在伺服器上,然後再傳遞給用戶端的方法,最後每次調用這個功能的時候再刪除以前在伺服器上所產生的所有Excel
文章2:在建立 EXCEL 應用程式時出現錯誤:
檢索 COM 類別工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005
解決辦法: 配置 DCOM 中 EXCEL 應用程式:
要在互動式使用者帳戶下設定 Office Automation 伺服程式,請按照下列步驟操作:
1. |
以管理員身份登入到電腦,並使用完整安裝來安裝(或重新安裝)Office。為了實現系統的可靠性,建議您將 Office CD-ROM 中的內容複寫到本地磁碟機並從此位置安裝 Office。 |
2. |
啟動要自動啟動並執行 Office 應用程式。這會強制該應用程式進行自我註冊。 |
3. |
運行該應用程式後,請按 Alt+F11 以載入 Microsoft Visual Basic for Applications (VBA) 編輯器。這會強制 VBA 進行初始化。 |
4. |
關閉應用程式,包括 VBA。 |
5. |
單擊開始,單擊運行,然後鍵入 DCOMCNFG。選擇要自動啟動並執行應用程式。應用程式名稱如下所示:Microsoft Access 97 - Microsoft Access 資料庫 Microsoft Access 2000/2002 - Microsoft Access 應用程式 Microsoft Excel 97/2000/2002 - Microsoft Excel 應用程式 Microsoft Word 97 - Microsoft Word Basic Microsoft Word 2000/2002 - Microsoft Word 文檔 單擊屬性開啟此應用程式的屬性對話方塊。 |
6. |
單擊安全選項卡。驗證使用預設的存取權限和使用預設的啟動許可權已選中。 |
7. |
單擊標識選項卡,然後選擇互動式使用者。 |
8. |
單擊確定,關閉屬性對話方塊並返回主應用程式列表對話方塊。 |
9. |
在 DCOM 配置對話方塊中,單擊預設安全性選項卡。 |
10. |
單擊存取權限的編輯預設值。驗證存取權限中是否列出下列使用者,如果沒有列出,則添加這些使用者:SYSTEM INTERACTIVE Everyone Administrators IUSR_<machinename>* IWAM_<machinename>** 這些帳戶僅在電腦上安裝了 Internet Information Server (IIS) 的情況下才存在。 |
11. |
確保允許每個使用者訪問,然後單擊確定。 |
12. |
單擊啟動許可權的編輯預設值。驗證啟動許可權中是否列出下列使用者,如果沒有列出,則添加這些使用者:SYSTEM INTERACTIVE Everyone Administrators IUSR_<machinename>* IWAM_<machinename>** 這些帳戶僅在電腦上安裝有 IIS 的情況下才存在。 |
13. |
確保允許每個使用者訪問,然後單擊確定。 |
14. |
單擊確定關閉 DCOMCNFG。 |
文章3:一個web程式需要操作Excel檔案,在開發環境下程式測試正常,部署到IIS後程式操作Excel檔案,IIS報錯。IIS提示資訊如下:檢索 COM 類別工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005。說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆疊追蹤資訊,以瞭解有關該錯誤以及代碼中導致錯誤的出處的詳細資料。
異常詳細資料: System.UnauthorizedAccessException: 檢索 COM 類別工廠中 CLSID 為 {00024500-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005。
ASP.NET 未被授權訪問所請求的資源。請考慮授予 ASP.NET 請求標識訪問此資源的許可權。ASP.NET 有一個在應用程式沒有類比時使用的基進程標識(通常,在 IIS 5 上為 {MACHINE}/ASPNET,在 IIS 6 上為網路服務)。如果應用程式正在通過 <identity impersonate="true"/> 類比,則標識將為匿名使用者(通常為 IUSR_MACHINENAME)或經過身分識別驗證的請求使用者。
要將 ASP.NET 存取權限授予某個檔案,請在資源管理員中右擊該檔案,選擇“屬性”,然後選擇“安全”選項卡。單擊“添加”添加適當的使用者或組。反白 ASP.NET 帳戶,選中所需存取權限對應的框。 ―――――――――――――――――――――――――――――――――經分析是asp.Net運行時許可權不足。解決方案如下:1、使用類比帳戶,在Web.config檔案中加入<!identity impersonate="true" userName="administrator" password="******"/>2、在DCOM元件服務中給MICROSOFT.EXCEL組件賦予ASP.NET的操作許可權,具體步驟:(1)開啟開始菜單的運行對話方塊,輸入dcomcnfg命令,確定,這時會彈出元件服務視窗(2)展開電腦-〉我的電腦-〉DCOM配置,找到Microsoft Excel應用程式節點(3)單擊右鍵-〉屬性,選中“安全”選項,在下面三個項目都選擇“自訂”,並單擊編輯按鈕(4)在啟動許可權對話方塊中點擊添加按鈕,添加相應的使用者(注意:如果是WIN2000,XP,則添加“機器名/ASPNET”使用者,我這裡是以WIN2003為例,WIN2003是添加“NETWORK Service”使用者),並賦予最大許可權