Erro HTTP 500.19 e código de erro: 0x80070021

219

Eu tenho uma compilação webAPI simples do Visual Studio 2013. Funciona bem quando eu o executo do VS13, mas quando eu copio o projeto no IIS local, ocorre 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.

Informações detalhadas sobre erros:

Módulo IIS Web Core

Notificação BeginRequest

Manipulador Ainda não determinado

Código de erro 0x80070021

Erro de configuração Esta seção de configuração não pode ser usada neste caminho. Isso acontece quando a seção está bloqueada no nível pai. O bloqueio é por padrão (overrideModeDefault = "Negar") ou definido explicitamente por uma tag de local com overrideMode = "Negar" ou pelo legado allowOverride = "false".

Arquivo de configuração \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Origem da configuração:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
Umar Abbas
fonte
É provável que a autenticação do Windows esteja desabilitada no IIS, mas necessária no web.config do seu aplicativo.
SpaceBison
@SpaceBison como ativar a autenticação de janelas no IIS8?
amigos estão dizendo
Aqui está o link do meu arquivo webconfig. icopter.co.uk/Webconfig.txt
Umar Abbas
Você já pensou em usar o módulo de reescrita de URL?

Respostas:

346

Obteve exatamente o mesmo erro e chegou a esta pergunta. Como o @SpaceBison mencionado nos comentários, esta resposta descreve a solução - https://stackoverflow.com/a/12867753/404099 . Vi isso tarde demais e faltam alguns passos. Isto é o que funcionou para mim:

Windows Server 2012, IIS 8.5 . Também deve funcionar para outras versões.

  • Vá para o gerenciador de servidores, clique em adicionar funções e recursos
  • Na seção funções, escolha: Servidor Web
    • Na subseção Segurança, escolha tudo (excluí o resumo, restrições de IP e autorização de URL, pois não os usamos)
    • Em Desenvolvimento de aplicativos, escolha Extensibilidade do .NET 4.5, ASP.NET 4.5 e ambas as entradas ISAPI
  • Na seção de recursos, escolha: NET 3.5, .NET 4.5, ASP.NET 4.5
  • Na seção servidor da Web, escolha: Servidor Web (todos), Ferramentas de Gerenciamento (Console de Gerenciamento IIS e Serviço de Gerenciamento), Autenticação do Windows - se você estiver usando algum deles
Ilia Barahovski
fonte
13
Tudo o que eu tinha a acrescentar eram os itens do .NET 4.5 na seção AppDev e na seção Recursos. O item de extensibilidade também forçou as 2 entradas ISAPI.
Bill
Esses passos me ajudam com o problema. Obrigado.
Psulek 12/08/19
Finalmente, uma solução para resolver minhas doenças. Obrigado, faz sentido, e é bastante simples. Ele sempre parece estar faltando características e funções nos dias de hoje ...
Alexandru
o ServerManager não está disponível no Windows7 Home, como corrigi-lo?
knocte
1
@knocte - no Windows 7, você pode inserir "Desinstalar ou alterar um programa" e clicar em "Ativar ou desativar os recursos do Windows". Isso não é o mesmo que o Gerenciador do Servidor, mas você pode instalar o IIS e os recursos relacionados dessa maneira.
Ilia Barahovski
122

Eu recebi esse erro ao tentar hospedar um serviço WCF em um aplicativo ASP.NET vazio. Toda a solução estava usando a plataforma .NET 4.5, no IIS 8.5 em execução no Windows 8.1. A pegadinha foi

  1. Abra "Ativar ou desativar os recursos do Windows"

  2. Vá para a seção WCF em serviços avançados do ASP.NET 4.5

  3. Verifique a ativação HTTP.

  4. Você será solicitado a reiniciar o sistema.

    Captura de tela

Isso deve corrigir o HTTP 500.19!

EDIT 11-FEB-2016 Acabei de ter um problema no Windows 10 Pro, IIS 10, desta vez, era um HTTP 404.0. A correção ainda é a mesma, ative "Ativação HTTP" em Recursos do Windows -> Serviços Avançados do .NET Framework 4.6 -> Serviços WCF -> Ativação HTTP

Sudhanshu Mishra
fonte
Muito obrigado @dotnetguy! :-) funcionou para mim também. O erro ocorreu quando tentei hospedar a API da Web 2.2 e o MVC no aplicativo ASP.NET vazio.
Gurusinghe
@dotnetguy Isso é exatamente o que me ajudou depois de não conseguir que o IIS trabalhasse com meu aplicativo MVC local no Visual Studio. Muito obrigado. Ativação HTTP é!
silkfire
@silkfire feliz que ajudou!
Sudhanshu Mishra 19/09/2015
@dotnetguy Obrigado
Heemanshu Bhalla
@dotnetguy Tem o mesmo problema exato e isso resolveu! Muito obrigado! Você realmente é um cara .Net! : D
Rian
47

Eu também estava recebendo o mesmo problema, mas depois de invadir o cérebro com o IIS e o google por muitas horas. Eu descobri a solução. Este erro ocorre porque algumas configurações estão desabilitadas no IISapplicationHost.config .

Abaixo estão as etapas para solução:

  1. Vá para C:\Windows\System32\inetsrv\config\applicationHost.confige abra no bloco de notas
  2. Altere o seguinte valor-chave presente em

    • <section name="handlers" overrideModeDefault="Deny" /> altere esse valor de "Negar" para "Permitir"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> altere esse valor de "Negar" para "Permitir"

Funcionou para mim.

SeeTheC
fonte
2
Obrigado. Depois de executar essas etapas, o próximo erro apareceu. Eu poderia resolvê-lo como descrito aqui: stackoverflow.com/a/30594003/434742
Jenny O'Reilly
31

Se você estiver executando o IIS nesse computador pela primeira vez, tente executar a ferramenta de registro do ASP.NET IIS (aspnet_regiis.exe).

Veja como fazer isso: Se você estiver usando o .net framework v4, abra o prompt de comando como administrador e altere o diretório para sua pasta base do .net framework usando:

CD C:\Windows\Microsoft.NET\Framework\v4.0.30319

ou, se você estiver usando um computador de 64 bits, use:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

quando você navegar com êxito para o diretório apropriado, execute a ferramenta de registro do ASP.NET IIS usando:

aspnet_regiis -i

Se você estiver usando uma versão diferente do .NET Framework, substitua v4.0.30319pelo nome da pasta apropriado.

Espero que isto ajude.

Ibrahim Dauda
fonte
Estou tentando executar dois projetos VS diferentes no meu servidor iis (máquina virtual); um funciona, um não ... O acima ajudou a obter o primeiro trabalho; existe alguma razão para o segundo não funcionar?
precisa saber é o seguinte
7
Eu usei esse método no passado, mas aspnet_regiis não é mais suportado no Windows 8.1. Para registrar o 4.5, use os Programas e Recursos> Ativar ou desativar os recursos do Windows> Serviços de Informações da Informação> Serviços da World Wide Web> Recursos de Desenvolvimento de Aplicativos> Verifique o ASP.NET 4.5 e o que mais você precisar.
Masterwok
1
isso precisa ser executado como administrador (clique com o botão direito do mouse no ícone cmd.exe -> executar como administrador) e, mesmo que seja possível detectar erros durante a operação (e produzir um arquivo de log), funcionou para mim!
knocte
2
Para o IIS 8.5 no Windows 8.1 (ou Windows Server 2012), isso não funciona. Recebi o seguinte prompt: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Comece a instalar o ASP.NET (4.0.30319.33440). Esta opção não é suportada nesta versão do sistema operacional. Os administradores devem instalar / desinstalar o ASP.NET 4.5 com IIS8 usando a caixa de diálogo "Ativar / desativar os recursos do Windows", a ferramenta de gerenciamento do Gerenciador do Servidor ou a ferramenta de linha de comando dism.exe.
Sudhanshu Mishra
Obrigado!! Ele funciona para mim com o IIS 10 e Windows 10 :)
Víctor Beltrán
22

Eu resolvi isso fazendo o seguinte:

WebServer(ISS)->WebServer->Application Development
add .NET Extensibility 3.5
add .NET Extensibility 4.5
add ASP.NET 4.5
add ISAPI Extensions
add ISAPI Filters

insira a descrição da imagem aqui

GIOESCOM
fonte
10

No Windows 8.1, IIS 8.5, a solução para mim foi registrar o 4.5 no painel de controle:

Programas e Recursos> Ativar ou desativar recursos do Windows> Serviços de Informações e Informações> Serviços da World Wide Web> Recursos de Desenvolvimento de Aplicativos> Selecione ASP.NET 4.5

Clique OK.

Jon
fonte
3
No Windows 10, as opções eram 'ASP', ASP.NET.35. 'E' ASP.NET 4.6 '. A verificação de 4.6 funcionou para mim. Obrigado!
PeterVermont
Eu acho que essa é a resposta mais concisa e fácil de entender.
themefield 26/07/19
4

Quando o erro é identificado - "Isso acontece quando a seção está bloqueada no nível pai". Para desbloquear a seção, você pode usar o appcmd.exe e execute o seguinte comando:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost

Para obter mais informações sobre o bloqueio de seção e o contexto de configuração pai, consulte a documentação do IIS .

Taras Alenin
fonte
4

No nosso caso, lutamos com esse erro por alguns dias. Acontece que, no painel de controle, os programas ativam ou desativam os recursos do Windows.

Selecionamos Serviços de Informações da Internet, serviços da World Wide Web, recursos de desenvolvimento de aplicativos e lá verificamos o conjunto de recursos associados ao nosso ambiente de desenvolvimento. Por exemplo: ASP.NET 4.6. Extensibilidade do .NET 4.6, etc.

Funciona!

Javier Livio
fonte
1
Isso corrigiu meu problema também. Portanto, o problema foi que, depois de adicionar o IIS à minha máquina local, eu não habilitei os recursos adequados. Isso resolveu. Obrigado.
jbooker
3

Tente desbloquear as definições de configuração relevantes do IIS (7.5) no nível do servidor, da seguinte maneira:

  1. Abra o Gerenciador do IIS
  2. Selecione o servidor no painel Conexões
  3. Abra o Editor de configuração no painel principal
  4. No menu suspenso Seções, selecione a seção para desbloquear, por exemplo, system.webServer> defaultPath
  5. Clique em Desbloquear atributo no painel direito
  6. Repita para todas as outras configurações que você precisa desbloquear
  7. Reiniciar o IIS (opcional) - selecione o servidor no painel Conexões, clique em Reiniciar no painel Ações
Chris
fonte
Isso é quase útil, mas no IIS 7 não há "defaultPath" no system.webServer
Djorge
Com isso, ele quer dizer que se você estiver olhando para atualizar a Autenticação do Windows, encontrará o caminho system.webServer -> Security -> Authentication.
Mido
3

No meu caso, havia regras para o módulo IIS Rewrite do IIS , mas eu não tinha esse módulo instalado. Você deve verificar o seu web.config se houver algum módulo incluído, mas não instalado.

HasanG
fonte
1
Acabei de instalar tudo o mais necessário, mas ainda não o funcionou. Acabei de instalar o módulo URL Rewrite e o fiz funcionar! Obrigado!
Vitox 31/12/19
Se o módulo URL Rewrite estiver ausente, o código de erro não será 0x80070021.
Lex Li
3

Se for o Windows 10, abra o PowerShell como administrador e execute o seguinte comando:

dism /online /enable-feature /all /featurename:IIS-ASPNET45
user2912206
fonte
1

Seu web.config descreve que você está usando autenticação de formulários - ative a autenticação de formulários e desative a autenticação anônima no IIS, no menu Autenticação, para o site em execução no IIS.

SpaceBison
fonte
0

Por favor, <staticContent />alinhe e apague-o do web.config.

Erdogan
fonte
0

Bem, estamos usando o Amazon Web Services e, portanto, pretendemos usar scripts e programas para solucionar esse problema. Então, eu tenho procurado por uma ferramenta de linha de comando. Então, primeiro eu tentei o truque de correr

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

mas porque estou executando um Windows Server 2012 baseado em nuvem, ele reclamou

This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

e pesquisei no Google e encontrei a página de suporte oficial da Microsoft KB2736284 . Portanto, há uma ferramenta de linha de comando dism.exe. Então eu tentei o seguinte

dism /online /enable-feature /featurename:IIS-ASPNET45

mas ele reclamou e deu uma lista de nomes de características para tentar, então tentei um por um e testei minha página da WebAPI após cada uma e funcionou após a parte inferior da lista.

dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
dism /online /enable-feature /featurename:IIS-ISAPIFilter 
dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 

E agora eu posso navegar para o meu site WebAPI e ver as informações da API. Isso deve ajudar algumas pessoas. [No entanto, ainda não estou totalmente doido e não consigo acessar o site de fora da caixa. Ainda trabalhando nisso.]

Além disso, realizei algumas etapas anteriores, seguindo as respostas de outras pessoas. Posso confirmar que a seguinte delegação de recursos precisa ser alterada (embora eu queira encontrar uma ferramenta de linha de comando para eles).

In Feature delegation

Change 
'Handler Mappings' from Read Only to Read/Write

Change 
'Modules' from Read Only to Read/Write

Change 
'SSL Settings' from Read Only to Read/Write
S Meaden
fonte
-1

Verifique se o servidor IIS instalou o recurso de reescrita de URL.
Se não estiver instalado, verifique se o arquivo web.config não possui a configuração relacionada à reescrita de URL

<!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/> ...

Algum tempo depois que copiamos a configuração do servidor legado e implantamos imediatamente em um servidor novo, podemos encontrar esse tipo de problema 500.

Frank Myat Thu
fonte
Se a reescrita de URL estiver ausente, o código de erro não será 0x80070021.
Lex Li
-3

A solução que funcionou para mim foi excluir meu Web.config atual e adicionar um novo. Isso resolveu o problema para mim

Pheko Moroke
fonte
6
Renunciar ao meu trabalho é mais fácil do que criar um novo web.config. Nunca tente fazê-lo.
Shadi Namrouti 22/10