[狀況]
在 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