FIX:浏览 ASP.NET 页时出现“Failed to start monitoring directory changes”(未能启动对目录更改的监视)错误信息
症状
在浏览 ASP.NET (.aspx) 页时,可能会显示以下错误信息之一:
Access denied to 'D:\MyWeb\Users\MainDirectory\MyApplication\' directory.Failed to start monitoring directory changes.
- 或 -
Access denied to 'D:\MyWeb\Users\MainDirectory\MyApplication\SamplePage.aspx'.Failed to start monitoring file changes.
有关与上述每一错误信息关联的调用堆栈跟踪的更多信息,请参见“更多信息”一节。
原因
如果 ASP.NET 正在监视的文件所在的路径中有任何目录的名称超过 8 个字符,则为了检测文件更改,进程标识和模拟的用户标识必须对该文件路径层次结构中的所有目录具有特定的权限。
以下是 ASP.NET 监视的文件的一些示例:
如果 Aspnet_wp.exe 进程标识(默认为 ASPNET 帐户)在该文件路径层次结构中的至少一个目录上不具有权限,您就会收到第一条错误信息。
如果模拟的帐户在该文件路径的层次结构中的至少一个目录上不具有权限,将显示第二条错误信息。
以下是 ASP.NET 监视的文件的一些示例:
• | Web.config 文件 |
• | Machine.config 文件 |
• | ASP.NET 应用程序 Bin 目录中的文件 |
• | 缓存相关文件 |
如果模拟的帐户在该文件路径的层次结构中的至少一个目录上不具有权限,将显示第二条错误信息。
解决方案
可使用以下两种方法中的一种解决此问题。
例如:
注意:这些步骤仅对 IIS 6.0 中承载的 Web 应用程序有效。
方法 1
确保该文件路径的层次结构中所有目录的名称都少于 9 个字符长度。例如:
C:\Web\Users\MainDir\Site1
注意:当您重新命名了目录,使得每个目录的名称长度目前都少于 9 个字符,然后在 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 步。例如:
如果您希望授予针对这些文件夹的更具限制性的权限,请在完成第 5 步之后执行下列操作:
|
||||||||||||||
8. | 重新启动 IIS。 |
方法 3
如果您的计算机运行的是 IIS 6.0,则将该层次结构中所有文件夹的必要权限授予“网络服务”帐户。为此,请按照下列步骤操作:1. | 在 Windows 资源管理器中,找到包含该内容的应用程序文件夹和虚拟目录(例如,D:\MyWeb\Users\MainDirectory\MyApplication)。 | ||||||||||||||
2. | 右键单击该文件夹,然后单击“属性”。 | ||||||||||||||
3. | 在“安全”选项卡上,单击“添加”。 | ||||||||||||||
4. | 键入 ComputerName\NETWORK SERVICE(例如,在名为 Webdev 的计算机上,键入 Webdev\NETWORK SERVICE),然后单击“确定”。如果启用了模拟,您还必须添加模拟的帐户。 | ||||||||||||||
5. | 允许以下“网络服务”帐户权限(如果启用模拟,则允许以下模拟帐户权限):
|
||||||||||||||
6. | 单击“确定”以关闭“属性”对话框并保存更改。 | ||||||||||||||
7. | 为路径层次结构中的所有文件夹重复执行第 2 步到第 6 步。例如:
|
||||||||||||||
8. | 重新启动 IIS。 |
状态
Microsoft 已经确认这是本文开头列出的 Microsoft 产品中存在的错误。 此错误在 ASP.NET(包括在 .NET Framework 中)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/) PRB:浏览 ASP.NET 页时出现“Failed to Start Monitoring Directory Changes”(未能开始监视对目录的更改)错误信息
有关 ASPNET 帐户运行 ASP.NET 应用程序时所需的权限的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
317012 (http://support.microsoft.com/kb/317012/) ASP.NET 中的进程和请求标识
有关 ASP.NET 安全性的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306590 (http://support.microsoft.com/kb/306590/) INFO:ASP.NET 安全性概述