轉自:http://rainany.blog.163.com/blog/static/45469620091733414537/
問題如下:
在windows 2003下安裝了VS2005,在運行web應用程式的時候出現一下錯誤:對路徑“D:/temp1/MyTest.txt”的訪問被拒絕。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆疊追蹤資訊,以瞭解有關該錯誤以及代碼中導致錯誤的出處的詳細資料。
異常詳細資料: System.UnauthorizedAccessException: 對路徑“D:/temp1/MyTest.txt”的訪問被拒絕。
/////////////////////////////////////////////////////////////////////////
解決方案一
在需要進行讀寫操作的目錄下添加Network Service這個帳號,
由於在iis 6.0中,預設的應用程式集區中的標示用的是Network Service,
所以在進程中是使用Network Service這個帳號運行來運行w3wp.exe進程,
而當我們在運行VS 2003的時候需要對某一個目錄下進行讀寫操作,
看了一下該檔案夾,發現沒有Network Service,添加上該帳號,同時選上FULL CONTROL,問題解決,
///////////////////////////////////////////////////////////////////////////
解決方案二
在IIS6.0中的預設應用程式集區-->屬性-->標示中把Net Service改成Local System該問題也可以解決。
###############################################################################
什麼是應用程式集區呢?這是微軟的一個全新概念:應用程式集區是將一個或多個應用程式連結到一個或多個背景工作處理序集合的配置。因為應用程式集區中的應用程式與其他應用程式被背景工作處理序邊界分隔,所以某個應用程式集區中的應用程式不會受到其他應用程式集區中應用程式所產生的問題的影響。
Windows 2003同時支援兩種工作模式,預設為ISS 6.0背景工作處理序隔離模式。背景工作處理序隔離模式防止一個應用程式或網站停止了而影響另一個應用程式或網站,大大增強了IIS的可靠性。那麼如何設定兩種工作模式呢?
啟動IIS管理器,右擊網站,選擇“屬性”,開啟屬性對話方塊(圖1)。在IIS 6.0背景工作處理序隔離模式下,所有的應用程式代碼都在隔離環境中運行,它們是如何進行隔離的呢?Windows 2003新增了應用程式集區,背景工作處理序隔離模式允許客戶建立多個應用程式集區,每個應用程式集區都可以有不同的配置。因為這些應用程式集區直接從核心(而非WWW服務)接收它們的請求,所以效能和可靠性得到了增強。要隔離運行在同一台電腦上但屬於不同網站的Web應用程式,需要為每個網站建立單獨的應用程式集區。
建立應用程式集區
在IIS管理器中,開啟本機電腦,按右鍵“應用程式集區”,選擇建立“應用程式集區” (必須在背景工作處理序隔離模式下才能建立應用程式集區) 。“應用程式集區名稱”框中,輸入新的應用程式集區名稱。如果在“應用程式集區 ID”框中出現的 ID (如:AppPool #1)不是您想要的,可進行重新命名。如果您單擊了“將現有應用程式集區作為模板”,請在“應用程式集區名稱”框中按右鍵想要用來作為模板的應用程式集區。最後單擊[確定]。
指派應用程式集區
在 IIS 管理器中,按右鍵您要為其指派應用程式集區的應用程式,然後單擊“屬性”。 單擊“主目錄”選項卡,確認您正在指派的目錄或虛擬目錄的“應用程式名稱”是否已被填寫。如果“應用程式名稱”框尚未被填寫,請單擊“建立”,然後輸入名稱。
在“應用程式集區”列表框中,選擇您想要為其指派的應用程式集區的名稱。最後單擊[確定]。