ID do artigo: 317955 - Última revisão: terça-feira, 9 de agosto de 2005 - Revisão: 4.4

CORREÇÃO: Mensagem de erro "Erro ao começar o monitoramento das alterações de diretório" ao navegar para uma página ASP.NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Ao navegar para uma página ASP.NET (.aspx), uma das seguintes mensagens de erro pode ser exibida:
Acesso negado para o diretório "D:\MyWeb\Users\MainDirectory\MyApplication\". Erro ao começar o monitoramento das alterações de diretório.
-ou-
Acesso negado para o diretório "D:\MyWeb\Users\MainDirectory\MyApplication\SamplePage.aspx'. Erro ao começar o monitoramento das alterações do arquivo.
Para obter informações adicionais sobre os rastreamentos de pilha de chamada associadas com cada uma dessas mensagens de erro, consulte a seção "Informações adicionais".

Causa

Para detectar alterações de arquivos, a identidade do processo e a identidade do usuário representado devem ter permissões específicas para todos os diretórios na hierarquia do caminho do arquivo para o arquivo que ASP.NET está monitorando se quaisquer diretórios na hierarquia possuirem mais de oito caracteres em seus nomes.

Alguns exemplos dos arquivos que o ASP.NET monitoram são:
  • Arquivos Web.config
  • Arquivos Machine.config
  • Arquivos no diretório Bin de um aplicativo ASP.NET
  • Arquivos de dependência do cache
A primeira mensagem de erro é exibida se a identidade do processo Aspnet_wp.exe (a conta ASPNET por padrão) não possuir permissões em pelo menos um dos diretórios na hierarquia desse caminho de arquivo.

A segunda mensagem de erro é exibida se a conta representada não possuir permissões em pelo menos um dos diretórios na hierarquia desse caminho de arquivo.

Resolução

Use um dos seguintes métodos para resolver esse problema.

Método 1

Verifique se todos os nomes dos diretórios na hierarquia do caminho desse arquivo são menores que nove caracteres.

Por exemplo:
C:\Web\Users\MainDir\Site1
Observação Se você renomear os diretórios de modo que o comprimento de cada nome de diretório ficar menor que nove caracteres, após fazer as alterações necessárias na configuração do site nos Serviços de informações de Internet (IIS) da Microsoft para lidar com a renomeação do diretório, você terá que reiniciar o IIS.

Método 2

Conceda as permissões necessárias em todos os diretórios nessa hierarquia para a conta do processo ASP.NET (ASPNET por padrão) ou para a conta representada (se a representação estiver ativada). Para fazer isso, execute estas etapas:
  1. No Windows Explorer, vá para a pasta do aplicativo ou para o diretório virtual que contiver o conteúdo (por exemplo, D:\MyWeb\Users\MainDirectory\MyApplication).
  2. Clique com o botão direito do mouse na pasta e clique em Propriedades.
  3. Na guia Segurança, clique em Adicionar.
  4. Digite Nome do computador\ASPNET (por exemplo, em um computador chamado Webdev, digite Webdev\ASPNET) e clique em OK. Se a representação estiver ativada, também será necessário adicionar as contas representadas.
  5. Conceda as seguintes permissões para a conta ASPNET (e para as contas representadas se a representação estiver ativada):
    • Leitura & Execução
    • Listar conteúdos da pasta
    • Leitura

  6. Clique em OK para fechar a caixa de diálogo Propriedades e para salvar as alterações.
  7. Repita as etapas 2 a 6 para todas as pastas na hierarquia do caminho. Por exemplo:

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

    Se quiser conceder mais permissões restritivas a essas pastas, execute estas etapas após concluir a etapa 5:

    1. Clique em Avançado.
    2. Na guia Permissões, clique na entrada de permissão para a conta ASPNET (ou outra conta representada) e clique em Editar.
    3. Clique em Limpar tudo e marque a caixa de seleção Permitir para a permissão Listar pasta / Ler dados.
    OBSERVAÇÃO: O diretório virtual do aplicativo (por exemplo, D:\MyWeb\Users\MainDirectory\MyApplication) deve ter pelo menos as permissões especificadas na etapa 5.
  8. Reinicie o IIS.

Método 3

Se o seu computador estiver executando o IIS 6.0, conceda as permissões necessárias em todas as pastas nessa hierarquia para a conta Network Service (Serviço de rede). Para fazer isso, execute estas etapas:
  1. No Windows Explorer, localize a pasta do aplicativo no diretório virtual que contenha o conteúdo (por exemplo, D:\MyWeb\Users\MainDirectory\MyApplication).
  2. Clique com o botão direito do mouse na pasta e clique em Propriedades.
  3. Na guia Segurança, clique em Adicionar.
  4. Digite Nome do computador\NETWORK SERVICE (por exemplo, em um computador chamado Webdev, digite Webdev\NETWORK SERVICE) e clique em OK. Se a representação estiver ativada, também será necessário adicionar as contas representadas.
  5. Conceda as seguintes permissões para a conta Network Service (e para as contas representadas se a representação estiver ativada):
    • Leitura & Execução
    • Listar conteúdos da pasta
    • Leitura

  6. Clique em OK para fechar a caixa de diálogo Propriedades e salve as alterações.
  7. Repita as etapas 2 a 6 para todas as pastas na hierarquia do caminho. Por exemplo:
    • D:\MyWeb\Users\MainDirectory
    • D:\MyWeb\Users
    • D:\MyWeb
    • D:\
    Se quiser conceder mais permissões restritivas a essas pastas, execute estas etapas após concluir a etapa 5:
    1. Clique em Avançado.
    2. Na guia Permissões, clique na entrada de permissão para a conta Network Service (ou outra conta representada) e clique em Editar.
    3. Clique em Limpar tudo e marque a caixa de seleção Permitir para a permissão Listar pasta / Ler dados.
    Observação O diretório virtual do aplicativo (por exemplo, D:\MyWeb\Users\MainDirectory\MyApplication) deve ter pelo menos as permissões especificadas na etapa 5.
  8. Reinicie o IIS.
Observação Essas etapas são válidas apenas para aplicativos da Web hospedados no IIS 6.0.

Situação

A Microsoft confirmou que esse é um erro dos produtos da empresa que estão listados no começo deste artigo. Esse erro foi corrigido no ASP.NET (incluso no .NET Framework) 1.1.

Mais Informações

Este é o rastreamento de pilha de chamada associado com a primeira mensagem de erro na seção "Sintomas":
[HttpException (0x80004005): Acesso negado para o diretório "D:\MyWeb\Users\MainDirectory\MyApplication\". Erro ao começar o monitoramento das alterações de diretório.]
   System.Web.FileChangesMonitor.StartMonitoringDirectoryRenamesAndBinDirectory(String dir, FileChangeEventHandler callback)
   System.Web.HttpRuntime.StartMonitoringDirectoryRenamesAndBinDirectory()
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context)

[HttpException (0x80004005): Erro de inicialização ASP.NET]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context)
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
					
Este é o rastreamento de pilha de chamada associado com a segunda mensagem de erro na seção "Sintomas":
[HttpException (0x80004005): Acesso negado para "D:\MyWeb\Users\MainDirectory\MyApplication\SamplePage.aspx". Erro ao começar o monitoramento das alterações do arquivo.]
   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)
					
Se uma das mensagens de erro listadas na seção "Sintomas" for exibida, mas o rastreamento de pilha de chamada não for o mesmo, a causa da mensagem de erro poderá ser diferente. Nesse caso, consulte os artigos em "Referências" para obter informações adicionais.

Referências

Para obter informações adicionais sobre a mesma mensagem de erro em uma situação diferente, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
316721  (http://support.microsoft.com/kb/316721/ ) Mensagem de erro "Erro ao começar o monitoramento das alterações de diretório" ao navegar para uma página ASP.NET
Para obter informações adicionais sobre as permissões necessárias para a conta ASPNET executar seus aplicativos ASP.NET, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
317012  (http://support.microsoft.com/kb/317012/ ) Processo e identidade de solicitação no ASP.NET
Para obter informações adicionais sobre a segurança do ASP.NET, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
306590  (http://support.microsoft.com/kb/306590/ ) Visão geral da segurança do ASP.NET

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
Palavras-chave: 
kbfix kbbug kbcaching kbpending kbsecurity KB317955
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.