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:
- Adicione IIS_IUSRS com permissão de leitura em arquivos na pasta
- Alterar o método de autenticação do IIS para BasicAuthentication
- 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
asp.net
iis-7
file-permissions
Freesnöw
fonte
fonte
Respostas:
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.
fonte
IIS_IUSRS
e 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.Eu tinha o que parecia ser o mesmo problema de permissão no
web.config
arquivo.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.
fonte
error:
:) +1 Em vez de exigir o SSL, eu reescrevi o URL para HTTPS caso alguém vinculado sem https. Que enigma.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
fonte
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:
Isso funcionou para mim.
fonte
C:\
ieC:\Dev
ouC:\Code
, etc. O grupo de segurançaAuthenticated Users
é concedidoC:\
e propagado para pastas filho. No entanto, naC:\Users
pasta, essa propagação é interrompida. Portanto, desenvolvedores como eu, que hospedam seu código dentro da pasta pessoal, precisam conceder acessoAuthenticated Users
a essas pastas raiz do IIS para que o IIS funcione.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.
fonte
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
fonte
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!
fonte
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.
fonte
Por alguma razão, seu web.config está definido como somente leitura. Desmarque a opção somente leitura do arquivo web.config.
fonte
Eu precisava adicionar permissões ao IUSR (além do ISS-IUSRS, como outros sugeriram). (Consulte também: http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized )
fonte
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.
fonte
A solução aceita não foi para mim. Eu uso um repositório Git e ele é clonado para a seguinte pasta
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.
fonte
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.
fonte
Para mim, o erro apareceu durante a Depuração na minha máquina local e acabou relacionado ao web.config base, que é iniciado pelo .NET Framework ao compilar o site. Meu arquivo C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config tinha um elemento não reconhecido (folderLevelBuildProviders). A correção disso corrigiu o erro 500.19.
Veja isto: O Gerenciador do IIS não pode configurar a compilação do .NET nos aplicativos .NET 4
fonte
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.
fonte
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
fonte
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
Verifique se o
physicalPath
atributo não contém barras /, apenas barras invertidas\Exemplo de configuração corrigido -
applicationHost.config
fonte
C:\inetpub\MySite\\MyService
. Alterá-lo para uma única barra invertida trabalhouEu 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.
fonte
Mude seu projeto para alguma unidade diferente de C: funcionou para mim com o mesmo erro.
fonte
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.
fonte
Todas as respostas dadas são válidas e funcionam em diferentes circunstâncias.
Para mim, reiniciar o Visual Studio funcionou.
fonte
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.
fonte
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.
fonte
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.
fonte
verifique se o arquivo não está marcado como somente leitura , apesar da permissão IIS_IUSRS, ele exibirá a mesma mensagem.
fonte
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.
fonte
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"
fonte
À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.
fonte
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
fonte
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)
fonte