[狀況]
在 VS2003 ASP.NET 執行 Excel 元件時產生存取被拒的錯誤。

[發生錯誤的程式碼]
Excel.Application     excelapp=new   Excel.Application();

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

例外詳細資訊: System.UnauthorizedAccessException: 存取被拒。

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

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

[UnauthorizedAccessException:   存取被拒。]  
  zwErp1.report.test.WebForm3.Button2_Click(Object   sender,   EventArgs   e)   in   e:\iis\zwerp1\report\test\webform3.aspx.cs:83  
  System.Web.UI.WebControls.Button.OnClick(EventArgs   e)   +108  
        System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String   eventArgument)   +57  
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler   sourceControl,   String   eventArgument)   +18  
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection   postData)   +33  
  System.Web.UI.Page.ProcessRequestMain()   +1263  

[解決方法]
直接在執行命令列打上"dcomcnfg",然後在元件服務>我的電腦>DCOM 設定 內找到 "Microsoft Excel 應用程式",按"內容",裡面的安全性頁籤,把存取權.設定權.啟動權都設自訂然後給以下的帳號權限 :

IIS5 : ASPNET
IIS6 : Network Service(或許,沒試過)

PS : 如果你有在 Web.config 設定<identity impersonate="true"/>,上面的帳號要改為 IUSR_MACHINENAME

全站熱搜
創作者介紹
創作者 felixhuang 的頭像
felixhuang

菲力貓的程式設計

felixhuang 發表在 痞客邦 留言(2) 人氣()