文章編號: 317955 - 上次校閱: 2005年7月8日 - 版次: 4.4

FIX: 「 無法啟動監視目錄變更 」 時,出現錯誤訊息您瀏覽至 ASP.NET Web 網頁

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

當您瀏覽至 ASP.NET (.aspx) 網頁時,可能會收到下列錯誤訊息:
存取被拒 'D:\MyWeb\Users\MainDirectory\MyApplication\' 目錄。無法啟動監視目錄變更。
-或者-
存取被拒 'D:\MyWeb\Users\MainDirectory\MyApplication\SamplePage.aspx'。無法啟動監視檔案變更。
如需有關與每個這些錯誤訊息相關聯的呼叫堆疊追蹤的詳細資訊,請參閱 < 其他資訊 > 一節。

發生的原因

若要偵測檔案變更,處理序識別身份和模擬的使用者身分識別必須擁有所有目錄的特定權限階層中的檔案路徑之 ASP.NET 監視是否有任何目錄中的階層架構在名稱中都有超過 8 個字元的檔案。

ASP.NET 會監視的檔案的部份範例如下所示:
  • Web.config 檔案
  • Machine.config 檔
  • ASP.NET 應用程式的 Bin 目錄中的檔案
  • 快取相依性檔案
如果 Aspnet_wp.exe 處理序識別 (預設是 ASPNET 帳戶) 至少其中一個目錄階層中的該檔案的路徑上沒有權限,您就會收到第一個錯誤訊息。

如果模擬的帳戶不具有至少其中一個目錄階層中的該檔案的路徑上的權限,您會收到第二個錯誤訊息。

解決方案

使用下列方法之一來解決這個問題。

方法 1

請確定所有目錄名稱,該檔案路徑的階層架構中是少於 9 個字元長。

例如:
C:\Web\Users\MainDir\Site1
附註如果您重新命名目錄,讓每個目錄名稱的長度現在少於 9 個字元之後的 Web 站台在 Microsoft 網際網路資訊服務 (IIS) 處理目錄重新命名的組態中進行必要的變更,您必須重新啟動 IIS。

方法 2

(如果模擬已開啟),請授與所有 ASP.NET 處理序帳戶 (預設的 ASPNET),或模擬帳戶該階層架構中目錄上所需的權限。要這麼做,請您執行下列步驟:
  1. 在 [Windows 檔案總管瀏覽至應用程式資料夾或虛擬目錄包含內容 (比方說 D:\MyWeb\Users\MainDirectory\MyApplication)。
  2. 在資料夾上按一下滑鼠右鍵,然後按一下 [內容]。
  3. 在 [安全性] 索引標籤上按一下 [新增]。
  4. ComputerName \ASPNET (比方說電腦上輸入一個名為 Webdev,鍵入 Webdev\ASPNET),然後按一下 [確定]。如果模擬亮也必須新增模擬的帳戶。
  5. 如果模擬已開啟,請允許下列權限 ASPNET 帳戶 (以及模擬帳戶):
    • 讀取 & 執行
    • 列出資料夾內容
    • 讀取

  6. 按一下 [確定] 關閉 [內容] 對話方塊,並儲存所做的變更。
  7. 對所有的資料夾路徑的階層架構中重複步驟 2 到 6。例如:

    • D:\MyWeb\Users\MainDirectory
    • D:\MyWeb\Users
    • D:\MyWeb
    • D:\

    如果要授與更嚴格的權限給這些資料夾後,請依照下列步驟進行完成步驟 5:

    1. 按一下 [進階]。
    2. 在 [權限] 索引標籤上按一下 [ASPNET 帳戶 (或另一個的模擬的帳戶) 的使用權限項目,然後按一下 [編輯]。
    3. 按一下 [全部清除],然後再按一下以選取 允許] 核取方塊,列出資料夾 / 讀取資料 權限。
    注意: 這個應用程式虛擬目錄 (比方說 D:\MyWeb\Users\MainDirectory\MyApplication) 至少必須有權限,在步驟 5 中指定。
  8. 重新啟動 IIS。

方法 3

如果您的電腦執行 IIS 6.0,授與對網路服務帳戶該階層架構中的所有資料夾上所需的權限。要這麼做,請您執行下列步驟:
  1. 在 Windows 檔案總管找出應用程式資料夾] 或 [包含內容 (比方說 D:\MyWeb\Users\MainDirectory\MyApplication) 的虛擬目錄]。
  2. 在資料夾上按一下滑鼠右鍵,然後按一下 [內容]。
  3. 在 [安全性] 索引標籤上按一下 [新增]。
  4. ComputerName \NETWORK 服務 (比方說電腦上輸入一個名為 Webdev,鍵入 Webdev\NETWORK 服務),然後按一下 [確定]。如果模擬亮也必須新增模擬的帳戶。
  5. 如果模擬已開啟,請允許下列權限網路服務帳戶 (以及模擬帳戶):
    • 讀取 & 執行
    • 列出資料夾內容
    • 讀取

  6. 按一下 [確定] 關閉 [內容] 對話方塊,並儲存所做的變更。
  7. 重複步驟 2 到 6 的路徑的階層架構中的所有資料夾。例如:
    • D:\MyWeb\Users\MainDirectory
    • D:\MyWeb\Users
    • D:\MyWeb
    • D:\
    如果要授與更嚴格的權限給這些資料夾後,請依照下列步驟進行完成步驟 5:
    1. 按一下 [進階]。
    2. 在 [權限] 索引標籤上按一下 [網路服務帳戶 (或另一個的模擬的帳戶) 的使用權限項目,然後按一下 [編輯]。
    3. 按一下 [全部清除],然後再按一下以選取 允許] 核取方塊,列出資料夾 / 讀取資料 權限。
    附註應用程式虛擬目錄 (比方說 D:\MyWeb\Users\MainDirectory\MyApplication) 必須有最少的權限,以在步驟 5 中指定。
  8. 重新啟動 IIS。
附註這些步驟只是在 IIS 6.0 中裝載的 Web 應用程式的有效的。

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的有錯誤。這個 Bug 已修正在 (隨附於.NET Framework) 的 ASP.NET 1.1。

其他相關資訊

這是與第一個錯誤訊息 「 徵狀 > 一節中有關呼叫堆疊追蹤:
[HttpException (0x80004005): Access denied to 'D:\MyWeb\Users\MainDirectory\MyApplication\' directory. Failed to start monitoring directory changes.]
   System.Web.FileChangesMonitor.StartMonitoringDirectoryRenamesAndBinDirectory(String dir, FileChangeEventHandler callback)
   System.Web.HttpRuntime.StartMonitoringDirectoryRenamesAndBinDirectory()
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context)

[HttpException (0x80004005): ASP.NET Initialization Error]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context)
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
					
這是與第二個錯誤訊息 「 徵狀 > 一節中有關呼叫堆疊追蹤:
[HttpException (0x80004005): Access denied to 'D:\MyWeb\Users\MainDirectory\MyApplication\SamplePage.aspx'. Failed to start monitoring file changes.]
   System.Web.FileChangesMonitor.StartMonitoringFile(String fileName, FileChangeEventHandler callback)
   System.Web.Caching.CacheDependency.Init(String[] filenames, String[] cachekeys, CacheDependency dependency, DateTime start)
   System.Web.Caching.CacheDependency..ctor(String filename, DateTime start)
   System.Web.Caching.CacheDependency..ctor(String filename)
   System.Web.Security.FileAuthorizationModule.OnEnter(Object source, EventArgs eventArgs)
   System.Web.SyncEventExecutionStep.Execute()
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
					
如果您收到一個錯誤訊息"< 徵狀 > 一"] 節中所列的但是呼叫堆疊追蹤不相同錯誤訊息的原因可能不同。在這種情況下請參閱文件中 < 參考 > 如需詳細資訊。

?考

如在不同的案例中相同的錯誤訊息的其他有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
316721? (http://support.microsoft.com/kb/316721/ ) 「 無法啟動監視目錄變更 」 時,出現錯誤訊息您瀏覽至 ASP.NET Web 網頁
如 ASPNET 帳戶必須具有執行 ASP.NET 應用程式的權限的其他有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
317012? (http://support.microsoft.com/kb/317012/ ) 在 ASP.NET 中的處理程序和要求識別
如其他有關 ASP.NET 安全性,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
306590? (http://support.microsoft.com/kb/306590/ ) ASP.NET 安全性概觀

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.0
關鍵字:?
kbmt kbfix kbbug kbcaching kbpending kbsecurity KB317955 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:317955? (http://support.microsoft.com/kb/317955/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。