如果在asp.net web 上開發讀取Excel或Word文件,最常看到下面的錯誤訊息

這問題是因為,雖然已經在該Server安裝Office,卻沒有把權限開給Web處理的帳號

解決的方法,到元件服務(Component Service)/電腦(Computers)/我的電腦(My Computer)

開啟DCOM Config , 找到下列兩個應用程式
  • Microsoft Excel Application
  • Microsoft Office Word 97-2003 Document
調整安全性、識別兩處的權限即可!!

補充說明:64位元電腦會看不到上述兩個應用程式

請在開始/執行/MMC -32 =>強迫OS開啟32位元模式的MMC

接著加入新的Snap in / 元件服務(Component Service) , 就會看到了!!

‘/Web’ 應用程式中發生伺服器錯誤。


由於發生下列錯誤,為具有 CLSID {000209FF-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。

描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外詳細資訊: System.UnauthorizedAccessException: 由於發生下列錯誤,為具有 CLSID {000209FF-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。

沒有授權 ASP.NET 存取要求的資源。請考慮將資源存取權授與 ASP.NET 要求識別。ASP.NET 有一個基本處理序識別 (通常在 IIS 5 上為 {MACHINE}ASPNET,在 IIS 6 上為 Network Service),會在應用程式未模擬的情況下使用。如果應用程式是透過 模擬,這個識別將會是匿名使用者 (通常為 IUSR_MACHINENAME) 或經過驗證的要求使用者。

若要對檔案授與 ASP.NET 存取權,請在檔案總管中以滑鼠右鍵按一下檔案,選擇 [內容] 並選取 [安全] 索引標籤。按一下 [新增] 加入適當的使用者或群組。反白顯示 ASP.NET 帳戶,並且選取所需存取權限的核取方塊。

原始程式錯誤:

{ 
#region Word Function 
protected Microsoft.Office.Interop.Word.ApplicationClass 
objWord = new 
Microsoft.Office.Interop.Word.ApplicationClass(); 
This creates new object of Word.ApplicationClass 
protected string strPathToUpload;


Leave a Reply

Your email address will not be published. Required fields are marked *