A página solicitada não pode ser acessada porque os dados de configuração relacionados à página são um erro inválido.

480

Quero fazer upload de meu próprio site asp.net no IIS com o Gerenciador do IIS. Mas quando faço isso, recebo o seguinte erro

Erro HTTP 500.19 - Erro interno do servidor A página solicitada não pode ser acessada porque os dados de configuração relacionados à página são inválidos.

Módulo IIS
Notificação do núcleo da Web
Manipulador desconhecido Ainda não determinado
Código de 0x80070005
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\Yasso\Documents\Visual Studio 2008\WebSites\WebSite5\web.config

Procurei várias vezes uma solução para esse erro, mas nenhuma das soluções resolveu o erro.

Estou com um problema na minha IUSRconta. Não consigo ver esta conta nos "nomes de grupo ou usuário" nas propriedades de web.config.

Qual é o problema?

Yasmeen
fonte
3
Eu tive esse problema depois de reverter algumas alterações via Subversion (embora possa ser uma coincidência). Notei que as Web.configACLs do arquivo eram diferentes de outros arquivos no diretório e não estavam sendo herdadas do pai . Ativei a herança da ACL e tudo voltou ao normal.
ta.speot.is
1
Minha solução foi um pouco diferente. Em algumas máquinas com Windows Server 2008, você precisa conceder acesso ao grupo "IIS_IUSRS", não ao usuário "IUSR" - nas permissões de segurança da pasta do site. Certifique-se de ir ao local da sua máquina.
MacGyver
7
Eu tive esse problema ao mover um site para um servidor que não tinha o módulo IIS Url Rewrite instalado.
precisa saber é
1
Isso pode acontecer se você renomear seu servidor. Eu fiz isso comigo mesmo - e finalmente tive que entrar (Windows Server 2012 R2) e adicionar novamente o IIS APPPOOL \ SiteName ... e isso 100% corrigiu isso.
Michael K. Campbell
2
Se você é novo para a implantação ASP.NET Núcleo aplicativos em seu servidor mais antigo 2008 R2, você precisa instalar o .NET Núcleo Windows Server pacote de hospedagem - como eu aprendi a esta resposta
bkwdesign

Respostas:

178

A mensagem está dizendo que seu arquivo de configuração está corrompido de alguma forma. No entanto, também diz que não pode realmente acessar o arquivo de configuração. Portanto, eu ignoraria a mensagem original sobre corrupção / falta de validade, pois provavelmente é apenas o efeito de não conseguir ler o arquivo devido à falta de autorização.

O motivo pelo qual não é possível ler o arquivo de configuração é porque o processo que está executando o aplicativo da web não tem permissão para acessar o arquivo / diretório. Portanto, você precisa conceder ao processo que executa o aplicativo da web essas permissões.

Os direitos de acesso devem ser bastante diretos, ou seja, pelo menos Ler e, dependendo do seu aplicativo, talvez Escrever .

Acima, você menciona IUSR etc. não estando nas propriedades de web.config. Se com isso você quer dizer que o IUSR não está listado na guia segurança do arquivo, é uma coisa boa. Não se quer dar ao IUSR nenhum tipo de permissão para web.config . A função IUSR é um usuário anônimo da Internet.

O arquivo web.config deve ser acessível apenas através do seu aplicativo.

O problema é que você não disse qual versão do sistema operacional e do IIS está usando, por isso é difícil aconselhar quais etapas executar.

Ou seja, no IIS 7.5, é provável que a mensagem de erro que você está citando ocorra devido ao fato de seu ApplicationPoolIdentity não ter recebido as permissões. Seu aplicativo da web pertence a um pool de aplicativos e, portanto, você precisa conceder as permissões à conta do SO em que o pool de aplicativos do aplicativo da web é executado. Geralmente, isso é algo como o NetworkService, mas você pode personalizá-lo para executar sob uma conta criada especificamente. Sem mais informações, é difícil ajudá-lo.

intermensão
fonte
3
Posso dar essa permissão programaticamente? Por favor ajude. Eu estou tendo o mesmo problema.
Pcbabu
1
Graças isso resolveu meu problema também. Estou usando a representação, que aparentemente torna necessário atribuir permissões de leitura ao diretório do aplicativo para a conta representada.
Cesar
2
Eu continuo recebendo "Falha ao enumerar objetos no contêiner. Acesso negado." Depois de eu dar permissão
RollRoll
4
Clique com o botão direito do mouse na pasta para a qual você precisa dar permissão de segurança. Essa é a pasta raiz onde o aplicativo é publicado e a mesma pasta que o caminho físico do site do IIS. Escolha propriedades no menu de contexto e clique na guia Segurança. Edite usuários e, em seguida, adicione um usuário. Clique no botão Locais e escolha o ícone superior (parece com Meu computador). Na área de texto, insira IIS_IUSRS. Pressione OKs repetidamente até que todos os menus de contexto estejam fechados. Reinicie seu site e navegue até ele novamente.
Jeremy Ray Brown
Se você não deseja descobrir permissões no caminho físico do site, dê permissão a todos! Esse é um hack rápido e não recomendado para todo o acesso físico a arquivos / pastas.
Jeremy Ray Brown
662

Isso também pode acontecer se o site estiver configurado para usar o módulo IIS Rewrite URL, mas não estiver instalado.

bkaid
fonte
Foi isso para mim .. removi a seção de reescrita (que não estava realmente precisando de qualquer maneira) e está tudo bem.
Andrew Patterson
129
Bem jogado. <rant> Seria bom se o IIS jogaria um "eu não entendo o que <reescrita> é" de erro, em vez de reclamar sobre XML malformado </ discurso>.
Evan Haas
7
Muito obrigado - esse foi o meu problema também. O módulo de reescrita está em uso se você vir a tag <rewrite>. Alguém poderia pensar que o IIS poderia lhe dizer o que não pode analisar.
scolestock
6
Ótima maneira fácil de resolver a dependência que falta na linha de comando; webpicmd / Instalar / Produtos: UrlRewrite2
cirrus
2
Gostaria apenas de observar que, se o seu web.config incluir uma tag <rewrite>, será necessário o módulo de reescrita.
Jono 7/07
437

Finalmente , consegui a solução para o meu problema. A conta do ASP.net não apareceu no gerenciador do IIS, porque não marquei sua caixa de seleção no IIS. Para fazer isso no Windows 7, siga as etapas:

  1. Painel de controle aberto
  2. Clique no link "programa" (não desinstalar programas)
  3. Clique no link "ativar / desativar os recursos do Windows"
  4. Localize "Serviços de Informações da Internet IIS" na janela pop-up e expanda seu nó
  5. Expanda o nó "Serviço da World Wide Web"
  6. Expanda o nó "Recursos de desenvolvimento de aplicativos"
  7. Marque a caixa de seleção "ASP.NET"
  8. Depois clique no botão ok

Agora, você verá a conta do ASP.net no gerenciador do IIS e, por padrão, a conta do IIS. Agora, você deve mover o site do ASP.net de "meu documento" para outro local onde o IIS tenha permissão para acessá-lo (por exemplo, para outra partição no seu computador). Agora, navegue no seu site no gerenciador do IIS e ele deverá funcionar.

Muito obrigado por Jeff Turner pela solução.

Yasmeen
fonte
Alguém deve ter removido esse serviço de função de um servidor em execução há meses. Eu nunca teria imaginado checar isso. Ugh.
SixOThree
Ainda mais fácil, usando a linha de comando:dism /NoRestart /Online /Enable-Feature /FeatureName:IIS-ASPNET
i3arnon
1
Obrigado ... como eles podem lançar um produto com um nível tão baixo de mensagens de erro?
Vland
Minha seção <handlers> tinha uma referência ao WebDAV e, depois que adicionei o recurso WebDAV ao IIS, ele funcionou.
Andy Roberts
55

No meu caso, a instalação do módulo IIS URL Rewrite resolveu o problema.

Salim
fonte
sou eu me lembrando da próxima vez que é isso que o corrigiu para mim. que erro horrível: - /
Simon_Weaver 29/03
É o mesmo que a resposta mais votada .
Michael - Onde está Clay Shirky em
47

Eu estava tendo o mesmo problema, aqui está a solução que funcionou para mim.

  1. Gerenciador do IIS
  2. Clique com o botão direito do mouse nesse site
  3. Editar permissões
  4. Usuário adicionado 'IIS_IUSRS' na guia Segurança
  5. Deu permissões totais ao usuário 'IIS_IUSRS'
  6. Defina a identidade do pool de aplicativos como 'ApplicationPoolIdentity'
Sukhdevsinh Zala
fonte
2
Eu não recomendaria isso para fins de produção. Acredito que o IIS_IUSRS é uma conta anônima e você daria acesso total a toda a estrutura de diretórios do site
Jacques
Salvei o meu dia também, como eu descobri que a permissão é o culpado também. Eu usei outra identidade do apppool e funcionou!
Perto
39

Para desenvolvedores do Visual Studio (VS): Como sugerido por Harvey Darvey, Savage e Snives, a Configuração do host do aplicativo pode estar apontando para o caminho físico do aplicativo errado. Procure virtualDirectory em /.vs/config/applicationhost.config para alterar o PhysicalPath, se estiver incorreto.

insira a descrição da imagem aqui

Verifique se o PhysicalPath está correto:

insira a descrição da imagem aqui

Michael
fonte
3
Você também pode fazer isso exatamente a mesma coisa no projeto => Propriedades => url projeto => criar o diretório virtual, escolha sim para remapear para o caminho físico correto quando solicitado
Adam Diament
No meu caso, foi pouco diferente, mas dei minha direção, muito obrigado, isso me ajudou muito :)
Bharat
24

Alerta do Facepalm:

Você também receberá esse erro se o caminho para o arquivo de configuração estiver errado. Verifique duas vezes para garantir que o caminho físico seja inserido corretamente no IIS.

Jon Crowell
fonte
Como uma variante disso, acontece que eu configurei o caminho incorretamente para o próprio site. Eu acidentalmente passei pelo compartilhamento de rede mapeado em vez do caminho do arquivo do sistema local.
David
2
Teve o mesmo momento face-palma. Mudei meu site para uma subpasta e pensei que havia digitado corretamente o novo caminho no IIS. O site ainda parecia ter todas as pastas necessárias, etc., embaixo, aparecendo na árvore no IIS, por isso não acionou isso por ser o motivo. Eu redefini as permissões, etc., não a resolvi. Então, falando sobre o problema, me foi sugerido de passagem ... e agora tenho um site de trabalho novamente após 1 hora de tempo perdido!
31416 ladygargar
Onde esse caminho está definido? Este parece ser o meu problema, mas eu não posso encontrar o que eu preciso para a mudança
de Drew Rochon
No ambiente de desenvolvimento: .VS> config> applicationhost.config Isto é o que acontece quando você não tem um GIT ignorar sobre o arquivo e os desenvolvedores começarem a fazer check-in.
Savage
Eu tinha uma barra "\" extra no meu caminho físico - shesh. Obrigado por este
J rei
18

Você precisa atribuir permissões para IIS_IUSRS na máquina local (mas não precisa atribuir para IUSR, na verdade ele funcionará mesmo se você negar explicitamente as permissões).

Para atribuir permissões, clique com o botão direito do mouse na pasta e na guia segurança, conceda as permissões corretas e, se o usuário não estiver listado, clique em "ADICIONAR" e insira IIS_IUSRS (e verifique se, em "domínio", o local computador estiver selecionado ou insira no campo de nome YourLocalComputerName \ IIS_IUSRS) e .

Se desejar, em vez de atribuir permissões ao grupo IIS_IUSRS, você pode atribuir ao pool de aplicativos, que geralmente deve ser "IIS APPPOOL \ app pool name ".

yoel halb
fonte
No seguinte site: iis.net/learn/get-started/planning-for-security/… O grupo IIS_IUSRS substitui o grupo IIS_WPG. Esse grupo interno tem acesso a todos os recursos de sistema e arquivos necessários para que uma conta, quando adicionada a esse grupo, possa atuar perfeitamente como uma identidade do pool de aplicativos.
21416 Jeremy Ray Brown
Ainda obtendo acesso negado.
GreySage
15

Apenas para inserir, recebi o mesmo tipo de erro e meu problema era bastante simples: estava faltando o .NET Core Hosting Bundle. Depois de instalar a ferramenta e reiniciar o servidor, tudo estava bem.

Você pode encontrar o manual para hospedar o núcleo do asp.net no Windows aqui: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2

JS_Diver
fonte
Simplesmente instalar o .NET Core SDK não é suficiente para executar os sites ASP.NET Core no IIS. Passei várias horas trabalhando através esse erro ...
Ryan Rodemoyer
Pode não ser suficiente, mas resolve esse erro. Trabalhou para mim. Eu tinha assumido que todos os componentes .NET já estavam incluídos.
pcalkins
Sim, tive que instalar o "Runtime e Hospedagem Bundle" aqui: dotnet.microsoft.com/download/dotnet-core/2.2
Kirk Woll
Ok, o pacote "independente" não corresponde ao título.
SLCH000 01/08/19
11

O mesmo aconteceu comigo: tente verificar isso clicando duas vezes nas seqüências de conexão no painel direito do IIS 7 ao selecionar um site.

Isso causará um erro (que existe algum problema com o arquivo de configuração da web), porque você usou regras de reescrita de URL e o respectivo componente não está instalado.

Instale o "Microsoft URL Rewrite Module 2.0 para IIS 7" e isso deve resolver o seu problema

Tanuj Gulati
fonte
9

Nada aqui funcionou para mim, encontrei esse comando em outra resposta do SO e resolveu o meu problema. Basta iniciar o prompt de comando como administrador e executar este comando:

run->cmd

run "c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

Crédito: User Vicxx

Celt
fonte
Para corrigir meu ambiente de desenvolvimento vs 2017, tive que remover o IIS dos meus recursos do Windows 7. Adicione-o novamente, atualize e instale tudo o que for necessário. A etapa final foi executar a regiis no prompt de comando do visual studio 2017. Agora tudo funciona novamente, 8 horas gastas para consertar isso. uck ..
Warren LaFrance
7

Executo estas etapas para resolver esse problema no Windows Server 2012, IIS 8.5. Também deve funcionar para outras versões.

  1. Vá para o gerenciador do servidor, clique em adicionar funções e recursos
  2. Na seção funções, escolha: Web Server
  3. Na subseção Segurança, escolha tudo (excluí o resumo, restrições de IP e autorização de URL, pois não os usamos)
  4. Em Desenvolvimento de aplicativos .NET Extensibility 4.5, escolha ASP.NET 4.5e ambas as ISAPIentradas
  5. Na seção recursos escolher: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. Na seção servidor da Web, escolha: Web Server(todos), Management Tools(Console de Gerenciamento do IIS e Serviço de Gerenciamento), Windows
Sanbuur Dahir Hersi
fonte
6

Outra possibilidade que corrigiu esse problema para mim:

IIS -> Editar permissões -> guia Segurança -> conceder permissões apropriadas aos "usuários" (ou IIS_IUSRS, dependendo da configuração)

Valen
fonte
6

Ehm. Mudei meu site / arquivos para uma pasta diferente. Sem alterar o caminho no site do IIS.

Todos vocês podem rir agora.

Frederik Struck-Schøning
fonte
6

Verifique se o pool de aplicativos está definido para a versão correta da estrutura. Você também precisará garantir que seus usuários aspnet, IIS_IUSRS ou IUSR tenham acesso de leitura ao diretório do aplicativo.

Jeff Turner
fonte
Como posso fazer isso?? "certifique-se de que seus usuários aspnet ou IUSR tenham acesso de leitura ao diretório do aplicativo"
Yasmeen
5
vá para C: \ Usuários \ Documentos \ Documentos \ Visual Studio 2008 \ WebSites \ WebSite5 \ e verifique se o diretório WebSite5 possui permissões de leitura para o grupo IUSR e IIS_IUSRS. Você faz isso clicando com o botão direito do mouse no diretório e selecionando propriedades, depois indo para a guia segurança
Jeff Turner
Mas não vejo o grupo IUSR e IIS_IUSRS no grupo ou no nome do usuário !! não sei qual é o problema ??
Yasmeen
1
você vê uma opção para o serviço de rede? por padrão, que é o que o pool de aplicativos irá usar quando você está trabalhando em seu desktop (se bem me lembro)
Jeff Turner
1
quando você vai para a guia segurança, depois de clicar com o botão direito do mouse na pasta e nas propriedades selecionadas. Clique no botão "Adicionar", que deve gerar outra janela com o botão "Editar". Clique no botão "Editar" e digite "Serviço de Rede" na caixa de texto. Ele deve encontrar o usuário e adicioná-lo à lista. Em seguida, verifique se o usuário tem privilégios de leitura, no mínimo.
Jeff Turner
4

Isso também aconteceu comigo quando eu tinha um documento padrão com o mesmo nome (como index.aspx) especificado no meu arquivo web.config E no meu site IIS. Acabei removendo a entrada do site IIS e mantive a entrada web.config como abaixo:

<system.webServer>
  <defaultDocument>
    <files>
      <add value="index.aspx" />
    </files>
  </defaultDocument>...
theJerm
fonte
4

Às vezes, essa mensagem pode ter componentes ausentes no ambiente do IIS, por exemplo, uma estrutura específica ou um recurso do IIS, como compactação dinâmica, em vez de permissões para o web.config.

Se for esse o caso, uma solução pode ser instalar e usar o Microsoft Platform Installer e instalar os componentes ausentes - talvez seja necessário verificar o que exatamente está faltando, porque o log e a mensagem de erro não informam.

eagle779
fonte
NB: compressão dinâmica está na lista dos recursos do Windows 'e não MPI
Simon_Weaver
@Simon_Weaver, na verdade, a compactação dinâmica está na lista de coisas que o MPI instalará para você e está desde 2012, talvez até antes disso. Felicidades.
precisa saber é o seguinte
4

Tente instalar o subcomponente 'Application Development' do IIS, conforme mencionado neste SO

  • Clique em "Botão Iniciar" na caixa de pesquisa, digite "Ativar ou desativar recursos do Windows"
  • na janela de recursos, clique em: "Internet Information Services"
  • Clique em: "Serviços da World Wide Web"
  • Clique em: "Recursos de desenvolvimento de aplicativos"
  • Marque (ative) os recursos. Eu verifiquei tudo, menos CGI.

insira a descrição da imagem aqui

IsaacBok
fonte
3

Você precisa definir a permissão para a pasta do site ou copiá-los para a pasta wwwroot :) - Se definir a permissão, tenha duas maneiras: + Clique com o botão direito do mouse na pasta Seu site + Ou clique com o botão direito do mouse em Seu site no IIS => selecione Editar permissão e Adicionar um permissão (IUSR - usuário padrão do iis) Boa sorte ;-)

SownRocker
fonte
No meu caso - o iis 8, eram usuários autenticados.
the scion
3

No meu caso, isso causado pelo caminho físico do aplicativo aponta para uma pasta inexistente no IIS.

captura de tela de configuração do aplicativo

chengbo
fonte
3

Tive o problema ao copiar meu arquivo web.config do prod, alterar tudo que não estivesse relacionado ao prod, exceto as regras de reescrita que estavam reescrevendo para http S .

Removemos essas regras e corremos bem.

DanO
fonte
2

Bem simples, o IIS não tem acesso ao seu web.config. Eu começaria retirando o site da sua pasta de documentos. Verifique se ele tem permissões de r / w também.

OnResolve
fonte
I mover o site do documento para outro lugar, mas parece o mesmo erro
Yasmeen
2

Eu também tive o problema semelhante e o corrigi comentando algumas seções no arquivo web.config.

O projeto foi criado e implantado anteriormente no .Net 2.0. Depois de migrar para o .Net 3.5, ele começou a lançar a exceção.

Resoluções:

Se o seu arquivo de configuração contiver "< sectionGroup name =" system.web.extensions > ", comente e execute, pois esta seção já está disponível em Machine.config.

Munna Singh
fonte
2

Você pode obter esse erro se tiver um erro ou erro de sincronização no seu arquivo web.config.

Para mim, era um e comercial perdido em um URL que eu estava usando no AppSettings.

Tim P.
fonte
Eu também obtive isso com uma Senha em uma String de Conexão que tinha uma & - codificação para & amp; me passou esse problema. Obrigado, esta é a única resposta aqui não relacionada a permissões.
Jeremy Thompson
2

Na página de erro do IIS 7.5, clique em 'Exibir mais informações' na parte inferior da página e, nesse caso, o levará ao seguinte link da Microsoft:

http://support.microsoft.com/kb/942055

O 0x80070005 O código de erro parece estar relacionado às permissões e, seguindo as etapas da Resolução 2, o método 2, atribuir as contas corretas com permissões nas pastas relevantes deve corrigi-lo - passei 3 dias procurando uma solução até encontrar a solução e trabalhei logo depois.

kbbucks
fonte
2

teve esse problema com unidades mapeadas, o IIS não funciona com unidades mapeadas. Basta usar a unidade não mapeada.

Rob Sedgwick
fonte
2

Explore a pasta onde seu site está armazenado e veja se você receberá uma pasta extra "aspnet_client" e exclua essa pasta, que funcionará para você.

Eu tentei isso meu problema está resolvido.

Se funcionar para você, faça-o como resposta, para que outro corpo também obtenha solução.

Rahul Sonone
fonte
1

Nada disso funcionou para mim, mas finalmente tenho uma solução que funcionou para mim:

remova esta linha no web.config:

<compilation debug="true" targetFramework="4.5"/>

não remova esta linha

<compilation debug="true"/>
Luca Steeb
fonte
1

Adicione a conta local IIS_IUSRS à segurança e amplie o acesso de leitura / execução. isso funciona no meu caso.

user3534355
fonte