Acesso negado do ASP.NET a diretórios do IIS

Este white paper descreve o que você deve fazer se uma solicitação ao aplicativo ASP.NET retornar o erro " Acesso negado ao diretório DirectoryName . Falha ao iniciar o monitoramento de alterações de diretório."

Aplica-se a ASP.NET 1.0 e ASP.NET 1.1.

ASP.NET RTM V1 agora é executado usando uma conta windows menos privilegiada - registrada como a conta "ASPNET" em um computador local.

Em alguns sistemas bloqueados, essa conta pode não ter, por padrão, acesso de segurança de leitura aos diretórios de conteúdo de um site, ao diretório raiz do aplicativo ou ao diretório raiz do site. Nesse caso, você receberá o seguinte erro ao solicitar páginas de um determinado aplicativo Web:

Captura de tela da exibição do navegador de uma página de erro intitulada Acesso negado.

Para corrigir isso, você precisará alterar as permissões de segurança nos diretórios apropriados.

Especificamente, ASP.NET requer acesso de leitura, execução e lista para a conta ASPNET para a raiz do site (por exemplo: c:\inetpub\wwwroot ou qualquer diretório de site alternativo que você possa ter configurado no IIS), o diretório de conteúdo e o diretório raiz do aplicativo para monitorar as alterações de arquivo de configuração. A raiz do aplicativo corresponde ao caminho da pasta associado ao diretório virtual do aplicativo na ferramenta administração do IIS (inetmgr).

Por exemplo, considere a hierarquia de aplicativos a seguir na pasta wwwroot.

C:\inetpub\wwwroot\myapp\default.aspx

Para este exemplo, a conta ASPNET precisa das permissões de leitura definidas acima para conteúdo no diretório myapp e wwwroot. Uma única ACL herdada na pasta raiz também poderá ser usada opcionalmente para ambos os diretórios se eles estiverem aninhados.

Para adicionar permissões a um diretório, execute as seguintes etapas:

  • Usando o Windows Explorer, navegue até o diretório
  • Clique com o botão direito do mouse na pasta de diretório e escolha "Propriedades"
  • Navegue até a guia "Segurança" na caixa de diálogo de propriedade
  • Clique no botão "Adicionar" e insira o nome do computador seguido pelo nome da conta ASPNET. Por exemplo, em um computador chamado "webdev", você inseriria webdev\ASPNET e clicaria em "OK".
  • Verifique se a conta ASPNET tem as caixas de seleção "Ler & Executar", "Listar Conteúdo da Pasta" e "Ler".
  • Clique em OK para ignorar a caixa de diálogo e salvar as alterações.

Captura de tela da caixa de diálogo de propriedade. O K está selecionado.

Se desejado, essas alterações podem ser automatizadas usando scripts ou a ferramenta "cacls.exe" que é fornecida com o Windows. Para obter mais informações sobre a conta ASPNET, consulte o documento de perguntas frequentes.

Se um determinado aplicativo Web depender de ter permissões de gravação ou modificação para uma pasta ou arquivo específico, isso poderá ser concedido seguindo o mesmo procedimento e verificando as caixas de seleção "Gravar" e/ou "Modificar".

Em computadores que permitem acesso de leitura a todos ou ao grupo Usuários para esses diretórios (que é a configuração padrão), nenhum problema será encontrado e as etapas acima não serão necessárias.