Não é possível ler o arquivo de configuração devido a permissões insuficientes


354

Recentemente, encontrei um erro ao tentar hospedar meu site asp.net com o IIS. Eu encontrei uma solução pela qual muitos juram.

Solução:

  1. Adicione IIS_IUSRS com permissão de leitura em arquivos na pasta
  2. Alterar o método de autenticação do IIS para BasicAuthentication
  3. atualize o site. Vai funcionar

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

O que eu adiciono ao meu arquivo web.config? Eu nunca tive que editá-lo antes. Aqui está o seu conteúdo atual:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Meu erro é:

Erro de configuração: não é possível ler o arquivo de configuração devido a permissões insuficientes
Arquivo de configuração: \? \ C: \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
Por favor, consulte o módulo de reescrita de instalação. economize algumas horas
— regisbsb

Minha solução seria executar os comandos da linha de comando aberta com privilégios de administrador. Para fazer isso, localize o prompt de comando, clique com o botão direito do mouse e clique em executar com privilégios de administrador.
— David Waddington

Além das outras respostas, observe que o EFS (sistema de arquivos com criptografia) também pode interferir no IIS.
— L-Mag

Eu fiz este anúncio agora host local está a pedir uma senha, mais próximo eu chegar tão longe para isso graças de trabalho
— Paul Ledger

11
Para mim não havia IIS_IUSR, eu fiz o mesmo para Usuário Autenticado e funcionou
— Bhanu Chhabra

Respostas:


544

Não há nenhum problema com o seu web.config . Seu site é executado sob um processo. No iis, você pode definir a identidade desse processo. A identidade que o pool de aplicativos do site executa como ( Serviços de Rede, Sistema Local etc.) deve ter permissão para acessar e ler o arquivo web.config.

Atualizar:

Esta resposta atualizada é a mesma que acima, mas um pouco mais longa, mais simples e aprimorada.

Primeiro de tudo : você não precisa alterar nada no seu arquivo de configuração. Tudo bem . O problema está nas permissões de arquivo do Windows .

Esse problema ocorre porque seu aplicativo não pode acessar e ler o arquivo web.config .

Torne o arquivo acessível ao grupo IIS_IUSRS . Apenas clique com o botão direito do mouse em web.config e clique em Propriedades , na guia Segurança , adicione IIS_IUSRS .

Então, o que é essa coisa do IIS_IUSRS?

Seu site é como um arquivo exe . Assim como qualquer arquivo exe, ele deve ser iniciado por um usuário e executado de acordo com as permissões atribuídas a esse usuário.

Quando o site é iniciado no IIS , o Pool de Aplicativos do site é associado a um usuário ( Serviços de Rede, Sistema Local , Etc. ...) (e pode ser alterado no IIS)

Então, quando você diz IIS_IUSRS , significa qualquer usuário ( Serviços de Rede, Sistema Local , Etc. ...) para o qual seu site está sendo executado.

E como o @Seph mencionado no comentário abaixo : Se o seu computador estiver em um domínio , lembre-se de que o grupo IIS_IUSRS é um grupo local . Além disso, verifique se, ao tentar encontrar esse usuário, o local deve ser definido no computador local e não no domínio corporativo.


79
Para outros, vale ressaltar que o padrão geralmente é IIS_IUSRSe garantir que, ao tentar encontrar esse usuário, verifique o local em que ele deve ser definido no computador local e não no domínio corporativo.
— Seph

3
Boa resposta e aqui está uma dica adicional - executando o IIS7 no Win7 em um domínio, talvez você não encontre IIS_IUSRS no grupo local se tentar encontrar com 'Verificar nomes ...'. Não se preocupe - basta digitar IIS_IUSRS por inteiro e clicar em OK, e tudo ficará bem.
— oito bits Guru

2
E se você tiver uma unidade compartilhada para o caminho de um site? Isso tem algum efeito? Como você faz isso funcionar com unidades compartilhadas?
— Kevin

2
Eu tive que fazer isso por IUSR. IIS_IUSRS não funcionou para mim por algum motivo.
— Todd

13
Ao tentar configurar um novo site da ASP.Net do zero no IIS 7 em diante, depois de corrigir o erro discutido neste segmento, você poderá enfrentar um erro de autorização "HTTP Error 401.3 - Unauthorized" como seu próximo obstáculo. Para corrigir isso, se você ativou a autenticação anônima, altere a identidade do usuário anônimo de "IUSR" (definido como padrão pelo IIS) para Identidade do pool de aplicativos. Para obter a janela de edição dessa configuração, use a ação "Editar" do painel Ações, no modo de exibição de recursos do IIS, para o recurso "Autenticação" do IIS.
— RBT

71

Eu tinha o que parecia ser o mesmo problema de permissão no web.configarquivo.
No entanto, meu problema foi causado pelo fato de o IIS não ter carregado o arquivo de configuração porque ele continha regras de reescrita de URL e eu não havia instalado o módulo de reescrita de URL do IIS no novo servidor.

Solução: Instale o módulo de reescrita.
Espero que isso salve alguém por algumas horas.


Sim. O servidor anterior que eu usei isso reescreveu a rota não ssl para ssl .. tanto por uma ótima mensagem de erro do IIS. error::) +1 Em vez de exigir o SSL, eu reescrevi o URL para HTTPS caso alguém vinculado sem https. Que enigma.
— Piotr Kula

obrigado!!! esteve mexendo com permissões por horas e ficou por isso no final!
— 22815 Carl Woodhouse

Como alguém instala o módulo de reescrita de URL do IIS?
— B. Clay Shannon

2
Este foi o meu problema também - obrigado! Para instalar o módulo de reescrita, faça o download desta página: iis.net/downloads/microsoft/url-rewrite feche o IIS, instale, reinicie o IIS (apenas por segurança).
— Tyler Forsythe

2
@ B.ClayShannon usar o Web Platform Installer, procurar IIS Rewrite
— enorl76

64

Nota do editor: Fazer o que esta resposta diz é PERIGOSO ! A conta LocalSystem é uma ...

Conta totalmente confiável, mais do que a conta de administrador. Não há nada em uma única caixa que esta conta não possa fazer e ela tem o direito de acessar a rede como a máquina (isso requer o Active Directory e a concessão de permissões à conta da máquina para algo)


Alterar a identidade de ApplicationPoolIdentity para LocalSystem fez o trabalho;).

Estou usando o win7 64 com o IIS 7.5

mais sobre a identidade do pool de aplicativos no IIS 7.5 e ganhe 7

insira a descrição da imagem aqui


Resposta útil para o IIS 6 também. Encontrado mais informações sobre como alterar Aplicação Identidade do Pool no site Microsoft aqui: microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/...
— Manuel Alvarez

22
Fazer essa alteração é um risco por causa do acesso estará concedendo a este serviço de segurança: msdn.microsoft.com/en-us/library/windows/desktop/...
— WhiteKnight

Esse parece ter sido meu problema aqui e a alteração da identidade do pool de aplicativos para o LocalSystem funcionou conforme descrito!
— Vasily Hall

21
A votação é baixa devido à brecha de segurança que isso deixa no servidor. Você nunca deve executar serviços públicos como o IIS na conta do sistema local !!!! Você está basicamente entregando as chaves do reino para qualquer pessoa que possa invadir o servidor. Sério NÃO FAÇA ISTO.
— Dimesio

5
OMG Esta resposta é TÃO INCORRETA por segurança. É necessária intervenção moderada. Esta é uma ideia HORRÍVEL. Imagine qualquer acesso ao arquivo especificado na string de consulta ... boom ... qualquer um pode LER web.config e o IIS servirá de bom grado para o mundo. NÃO USE ESTA RESPOSTA.
— enorl76

47

Eu tive o mesmo problema quando tentei compartilhar a pasta raiz do site com outro usuário. Alguma pasta perdeu a permissão. Então, eu segui as etapas para adicionar permissão ao grupo IIS_IUSRS , conforme sugerido por Afshin Gh. O problema é que este grupo não estava disponível para mim. Estou usando o Windows 7.

O que fiz, acabei de alterar algumas etapas:

  1. Clique com o botão direito do mouse na pasta pai (que perdeu a permissão),
  2. Propriedades => Segurança => Em "Nomes de grupo ou usuário:",
  3. Clique em Editar ...
  4. A janela "Permissão para sua pasta" será aberta.
  5. Em "Nomes de grupo ou usuário:" pressione ADD ... btn,
  6. Digite Authen e pressione Verificar nomes,
  7. Você verá o nome completo do grupo " Usuários autenticados "
  8. Pressione ok => aplicar.
  9. Isso deve ativar privilégios novamente.

Isso funcionou para mim.


2
Isso funcionou para mim. Essa deve ser a resposta aceita. Eu tentei os outros métodos, eles não funcionam.
— GunWanderer

11
Tentei todas as outras soluções não funcionará até este.
— jenna_3108 18/06/19

11
Ok, acho que tenho uma explicação do por que isso funciona. Alguns desenvolvedores hospedam seu código em C:\ ie C:\Devou C:\Code, etc. O grupo de segurança Authenticated Usersé concedido C:\ e propagado para pastas filho. No entanto, na C:\Userspasta, essa propagação é interrompida. Portanto, desenvolvedores como eu, que hospedam seu código dentro da pasta pessoal, precisam conceder acesso Authenticated Usersa essas pastas raiz do IIS para que o IIS funcione.
— Colin

quando clico em verificar nomes, ele me pede credenciais. Não tenho certeza de quais credenciais de usuário são esperadas aqui.
— RSB

18

Você não precisa alterar nada no seu web.config.

O problema são as permissões do sistema de arquivos. Suas permissões de arquivo não permitem que o usuário IIS_IUSRS acesse web.config (ou provavelmente qualquer um dos arquivos). Altere suas permissões de arquivo no Windows para permitir que a conta IIS_IUSRS acesse.


11
Eu tive um problema parecido. Se alguém não conseguir encontrar o usuário IIS_IUSRS, verifique o local. O meu era padronizado para o domínio corporativo, por isso não o encontrei imediatamente porque esqueci de verificar para ver para onde ele estava procurando.
— jgreep

@Mystere Man Eu tenho o mesmo problema. Mudei as permissões e tentei. Ainda recebo o mesmo erro. :(
— Rauf

"(ou provavelmente qualquer um dos arquivos)" funciona para mim, permitindo que a conta IIS_IUSRS acesse o web.config não é suficiente, preciso habilitar o acesso a todos os arquivos do site.
— Tuyen Nguyen

2
Eu tive que fazer isso por IUSR. IIS_IUSRS não funcionou para mim.
— Todd

Obrigado. Eu concedi a 'Todos' com permissão total na pasta do aplicativo Web e ele funciona.
— Minh Nguyen

16

Torne o arquivo acessível ao grupo IIS_IUSRS . Clique com o botão direito do mouse em seu web.config, expanda propriedades e, na guia segurança, adicione IIS_IUSRS. Dê ao grupo acesso de leitura / gravação.

Quando o grupo NÃO estiver disponível, substitua IIS_IUSRS por ComputerName \ IIS_IUSRS


+1 boa dica. A resposta aceita é boa, mas esquece de mencionar que você pode precisar adicionar o nome do computador na frente de 'IIS_IUSRS', que foi o que me levou a superar isso.
— Ralph Lavelle

Isso ("Quando o grupo NÃO está disponível") teve minhas esperanças, mas mesmo quando eu acrescentei o nome do computador ("IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS"), ainda recebo o mesmo erro. Também tentei o nome completo do computador, mas ele nem aceitaria isso como um usuário válido.
— B. Clay Shannon

15

Vá para a pasta pai, clique com o botão direito do mouse e selecione Propriedades . Selecione a guia Segurança , edite as permissões e Adicionar . Clique em Avançado e em Localizar agora . Selecione IIS_IUSRS e clique em OK e OK novamente. Verifique se você tem a opção Escrever . Clique em OK e OK novamente.

Tarefa concluída!


19
O que diabos é recomendar o acesso de gravação quando basta ler? / downvoted
— TristanK

2
A única IIS * eu tenho é IIS_WPG
— B. Clay Shannon

11
@ B.ClayShannon Eu também. Eu só tenho IIS_WPG
— Fortune

13

Ao conceder permissões ao IIS_IUSRS , verifique se, na seção IIS / Autenticação do seu Aplicativo da Web, as credenciais de autenticação anônima usam a identidade do pool de aplicativos e não o IUSR.

insira a descrição da imagem aqui


Onde posso obter essa interface?

Na guia Exibição de recursos do seu aplicativo Web: Autenticação
— Carlos

Esta resposta deve fazer parte da causa de resposta aceita. Sem isso, você também precisará adicionar o IUSR na lista de acesso da pasta do site
— Laurent S.

7

Por alguma razão, seu web.config está definido como somente leitura. Desmarque a opção somente leitura do arquivo web.config.


Se sua permissão for de acesso total e ainda assim receber o erro, esta é a resposta correta (y).
— Vasil Valchev


4

Usei subst para criar um mapeamento de D: para C: para manter a mesma configuração que outros desenvolvedores da equipe. Isso também me deu os mesmos erros descritos. Remover isso corrigiu para mim.


3

A solução aceita não foi para mim. Eu uso um repositório Git e ele é clonado para a seguinte pasta

c:\users\myusername\source\repos\myWebSite

Eu criei um novo site do IIS e apontei para o caminho. Que não tinha as permissões iis_iusrs sugeridas na solução aceita. Quando adicionei as permissões, ele ainda não funcionou.

Ele só começou a funcionar quando eu dei as seguintes permissões ao grupo 'Usuários' e a herança conectou em cascata as permissões ao web.config. Provavelmente deveria tê-lo aplicado apenas ao web.config para reduzir a área da superfície de ataque.

Pemissions do usuário


Exatamente a mesma situação. Isso ajudou.
— Roemer

2

Tínhamos um site em execução com uma identidade específica no pool de aplicativos, somente depois de dar a esse usuário acesso de leitura à pasta que continha o web.config funcionaria. Nós rastreamos isso depois de adicionar o usuário 'everyone' com leitura e tudo funcionou bem.



2

Alterar a identidade do modelo de processo para LocalSystem corrigiu esse problema para mim. Você pode encontrar essa configuração se clicar com o botão direito do mouse no pool de aplicativos e escolher "Configurações avançadas". Estou executando o IIS 7.5.


2

Clique com o botão direito do mouse em Web.Config => Segurança da guia => Edição de botão => Adicionar botão => Botão avançado => Localizar agora => Nos resultados da pesquisa, selecione seu grupo (no nosso caso "IIS_IUSRS") => Ok => Ok => Está bem


2

Isso aconteceu quando o aplicativo IIS possui um diretório virtual com um caminho físico que contém barras invertidas em /vez de barras invertidas \. Isso foi feito acidentalmente usando uma API de gerenciamento de PowerShell para IIS durante nosso processo de entrega contínua.

Exemplo de configuração incorreta - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

Verifique se o physicalPathatributo não contém barras /, apenas barras invertidas\

Exemplo de configuração corrigido - applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

11
No meu caso, o caminho físico tinha uma barra dupla, por exemplo C:\inetpub\MySite\\MyService. Alterá-lo para uma única barra invertida trabalhou
— Ben Anderson

2

Eu resolvi isso adicionando permissão de leitura à pasta do usuário do pool de aplicativos (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config

Um pouco de histórico: nosso servidor foi hackeado usando um erro clássico, em que o usuário do aplicativo tinha mais permissões do que deveria (administrador local).

Para corrigi-lo, criamos um novo usuário de domínio que tinha apenas permissões na pasta do aplicativo, com direitos mínimos necessários e o atribuímos como usuário do pool de aplicativos. do que atingimos na questão e essa foi a solução para nossos problemas.


2

Mude seu projeto para alguma unidade diferente de C: funcionou para mim com o mesmo erro.


2

Isso pode acontecer se seu aplicativo estiver em um diretório virtual e o caminho para os arquivos for uma unidade mapeada.

Se você alterar o caminho dos arquivos para uma unidade local, isso será resolvido, se esse for realmente o seu problema.


2

Todas as respostas dadas são válidas e funcionam em diferentes circunstâncias.

Para mim, reiniciar o Visual Studio funcionou.


1

As respostas acima foram úteis, mas, caso isso ajude alguém - eu tive esse problema exato, e aconteceu que eu estava (rede Windows) compartilhando a pasta raiz da qual o site estava sendo hospedado. Matamos o compartilhamento e adicionamos a permissão de Usuários para ler / executar e funcionou novamente muito bem.

Eu suspeito que a parte tenha estragado tudo.


0

Eu também estava recebendo o "Não é possível ler o arquivo de configuração devido a permissões insuficientes". Acontece que as restrições ISAPI e CGI no IIS para o ASP.NET 4.0 32 bits e 64 bits foram definidas para negar. Marcar os dois como Permitido corrigiu meu problema.


0

Teve esse problema com um aplicativo virtual. Todas as permissões foram definidas. IIS_IUSRS, AppPoolIdentity e, em seguida, concedeu acesso total a Todos. Nada funcionou. Reinicie o apppool, o site e o IIS, mas não vá.

Excluiu o aplicativo virtual e o adicionou novamente do zero e começou a funcionar.

Gostaria de saber o que resolveu.


0

verifique se o arquivo não está marcado como somente leitura , apesar da permissão IIS_IUSRS, ele exibirá a mesma mensagem.


0

Eu recebi essa mensagem de erro devido à minha pasta física estar localizada em uma unidade de rede em oposição à unidade local. Parece que as permissões nessas unidades, por padrão, podem ser diferentes. Por exemplo, enquanto o local da unidade local deu permissão aos usuários do computador local, o local da rede não.

Além disso, a resposta aceita não funciona para esse caso. Os usuários locais ou usuários do IIS não estavam disponíveis para atribuir permissões. A solução foi mover a pasta física para a unidade local.


0

Eu tive o mesmo problema e, depois de fazer todas as coisas escritas aqui como respostas, ele ainda se reproduzia. A segunda metade do problema foi o fato de o .NET estar desativado em "Ativar ou desativar os recursos do Windows"


0

Às vezes, se for um novo servidor, você precisará configurar ou instalar o recurso ASP.NET no IIS para poder ler seu arquivo web.config.

No meu caso, esse foi o motivo.


0

No meu caso, eu estava tentando hospedar páginas de uma unidade mapeada (subst). O problema é que o subst foi executado em minha conta e o usuário do IIS não pode ver a mesma unidade


0

Dei permissão e usei o ICACLS.exe, mas não funcionou. Então mudei o caminho físico e funcionou com sucesso.

(IIS 8.5 do Windows 2012 R2)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.