Errore HTTP 500.19 e codice errore: 0x80070021


219

Ho una semplice webAPI compilata da Visual Studio 2013. Funziona bene quando lo eseguo da VS13 ma quando copio il progetto in IIS locale mi dà il seguente errore.

Errore HTTP 500.19 - Errore interno del server Impossibile accedere alla pagina richiesta perché i dati di configurazione correlati per la pagina non sono validi.

Informazioni dettagliate sull'errore:

Modulo IIS Web Core

Notifica BeginRequest

Gestore Non ancora determinato

Codice errore 0x80070021

Errore di configurazione Questa sezione di configurazione non può essere utilizzata in questo percorso. Ciò accade quando la sezione è bloccata a livello padre. Il blocco è di default (overrideModeDefault = "Deny") oppure impostato esplicitamente da un tag di posizione con overrideMode = "Deny" o l'eredità allowOverride = "false".

File di configurazione \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Fonte di configurazione:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

È probabile che questa sia l'autenticazione di Windows disabilitata in IIS, ma richiesta nel web.config dell'applicazione.
SpaceBison,


@SpaceBison come posso abilitare l'autenticazione di Windows in IIS8?
Umar Abbas,

Ecco il link del mio file webconfig. icopter.co.uk/Webconfig.txt
Umar Abbas,

Hai preso in considerazione l'utilizzo del modulo di riscrittura URL?

Risposte:


346

Ho ottenuto esattamente lo stesso errore e sono arrivato a questa domanda. Come @SpaceBison menzionato nei commenti, questa risposta descrive la soluzione - https://stackoverflow.com/a/12867753/404099 . L'ho notato troppo tardi e manca qualche passo. Questo è ciò che ha funzionato per me:

Windows Server 2012, IIS 8.5 . Dovrebbe funzionare anche per altre versioni.

  • Vai a server manager, fai clic su aggiungi ruoli e funzionalità
  • Nella sezione ruoli selezionare: Web Server
    • Nella sottosezione Sicurezza scegli tutto (ho escluso digest, restrizioni IP e autorizzazione URL poiché non li usiamo)
    • In Sviluppo applicazioni selezionare .NET Extensibility 4.5, ASP.NET 4.5 ed entrambe le voci ISAPI
  • Nella sezione funzionalità scegliere: NET 3.5, .NET 4.5, ASP.NET 4.5
  • Nella sezione del server Web scegliere: Server Web (tutti), Strumenti di gestione (Console di gestione IIS e Servizio di gestione), Autenticazione di Windows - se si utilizza uno di questi

13
Tutto quello che dovevo aggiungere erano gli elementi .NET 4.5 nella sezione AppDev e nella sezione Funzionalità. L'elemento di estensibilità ha anche forzato le 2 voci ISAPI.
Bill

Questi passaggi mi aiutano a risolvere il problema. Grazie.
psulek,

Finalmente una soluzione per risolvere i miei disturbi. Grazie, ha senso ed è abbastanza semplice. Sembra sempre che manchi caratteristiche e ruoli in questi giorni ...
Alexandru,

ServerManager non è disponibile in Windows 7 Home, come correggerlo?
Knocte,

1
@knocte: in Windows 7 è possibile accedere a "Disinstalla o modifica programma" e quindi premere "Attiva o disattiva funzionalità di Windows". Non è lo stesso di Server Manager, ma è possibile installare IIS e le funzionalità correlate in questo modo.
Ilia Barahovski,

122

Ho riscontrato questo errore durante il tentativo di ospitare un servizio WCF in un'applicazione ASP.NET vuota. L'intera soluzione utilizzava la piattaforma .NET 4.5, su IIS 8.5 in esecuzione su Windows 8.1. Il gotcha doveva

  1. Apri "Attiva o disattiva le funzionalità di Windows"

  2. Vai alla sezione WCF in Servizi avanzati ASP.NET 4.5

  3. Controlla l'attivazione HTTP.

  4. Ti verrà chiesto di riavviare il sistema.

    Immagine dello schermo

Questo dovrebbe risolvere l'HTTP 500.19!

EDIT 11-FEB-2016 Ho appena avuto un problema su Windows 10 Pro, IIS 10, questa volta era un HTTP 404.0. La correzione è sempre la stessa, attiva "Attivazione HTTP" in Funzionalità Windows -> Servizi avanzati .NET Framework 4.6 -> Servizi WCF -> Attivazione HTTP


Grazie mille @dotnetguy! :-) ha funzionato anche per me. L'errore è arrivato quando ho provato a ospitare l'API Web 2.2 e MVC sull'applicazione ASP.NET vuota.
Gurusinghe,

@dotnetguy Questo è esattamente ciò che mi ha aiutato dopo non essere riuscito a far funzionare IIS con la mia applicazione MVC locale in Visual Studio. Grazie mille. Attivazione HTTP è!
Silkfire,

@silkfire felice che abbia aiutato!
Sudhanshu Mishra,

@dotnetguy Grazie
Heemanshu Bhalla il

@dotnetguy Hai ottenuto lo stesso problema esatto e questo è stato risolto! Molte grazie! Sei davvero un ragazzo .Net! : D
Rian,

47

Stavo riscontrando lo stesso problema, ma dopo un assalto al cervello con IIS e Google per molte ore. Ho scoperto la soluzione. Questo errore è dovuto al fatto che alcune impostazioni sono disabilitate in IIS applicationHost.config.

Di seguito sono riportati i passaggi per la soluzione:

  1. Vai a C:\Windows\System32\inetsrv\config\applicationHost.confige apri nel blocco note
  2. Modifica il seguente valore chiave presente in

    • <section name="handlers" overrideModeDefault="Deny" /> cambia questo valore da "Nega" a "Consenti"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> cambia questo valore da "Nega" a "Consenti"

Ha funzionato per me.


2
Grazie. Dopo aver eseguito questi passaggi, è apparso il prossimo errore. Potrei risolverlo come descritto qui: stackoverflow.com/a/30594003/434742
Jenny O'Reilly

31

Se si esegue IIS su quel computer per la prima volta, è necessario provare a eseguire lo strumento di registrazione IIS ASP.NET (aspnet_regiis.exe).

Ecco come fare: Se si utilizza .net framework v4, aprire il prompt dei comandi come amministratore e modificare la directory nella cartella base del framework .net utilizzando:

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

oppure, se si utilizza un computer a 64 bit, utilizzare:

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

dopo aver navigato correttamente nella directory appropriata, eseguire lo strumento di registrazione IIS ASP.NET utilizzando:

aspnet_regiis -i

Se si utilizza una versione .NET Framework diversa, è sufficiente sostituirla v4.0.30319con il nome della cartella appropriata.

Spero che questo ti aiuti.


Sto cercando di eseguire due diversi progetti VS sul mio server iis (macchina virtuale); uno funziona, uno no ... Quanto sopra ha contribuito a far funzionare il primo; c'è qualche motivo per cui il 2 ° non dovrebbe funzionare?
JosephDoggie,

7
Ho usato questo metodo in passato ma aspnet_regiis non è più supportato su Windows 8.1. Per registrare 4.5, utilizzare Programmi e funzionalità> Attiva o disattiva le funzionalità di Windows> Servizi di informazione> Servizi World Wide Web> Funzioni di sviluppo applicazioni> Controlla ASP.NET 4.5 e qualsiasi altra cosa di cui potresti aver bisogno.
masterwok,

1
questo deve essere eseguito come amministratore (fare clic destro sull'icona cmd.exe -> esegui come amministratore), e anche se è in grado di rilevare errori durante l'operazione (e produrre un file di registro), ha funzionato per me!
Knocte,

2
Per IIS 8.5 su Windows 8.1 (o Windows Server 2012) questo non funziona. Ho ricevuto il seguente prompt: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Inizia l'installazione di ASP.NET (4.0.30319.33440). Questa opzione non è supportata su questa versione del sistema operativo. Gli amministratori dovrebbero invece installare / disinstallare ASP.NET 4.5 con IIS8 utilizzando la finestra di dialogo "Attiva / Disattiva funzionalità di Windows", lo strumento di gestione Server Manager o lo strumento da riga di comando dism.exe.
Sudhanshu Mishra,

Grazie!! Funziona per me con IIS 10 e Windows 10 :)
Video Beltrán

22

Ho risolto questo facendo quanto segue:

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

inserisci qui la descrizione dell'immagine


10

Su Windows 8.1, IIS 8.5 la soluzione per me era quella di registrare 4.5 dal pannello di controllo:

Programmi e funzionalità> Attivazione o disattivazione delle funzionalità di Windows> Servizi di informazione> World Wide Web Services> Funzioni di sviluppo applicazioni> Seleziona ASP.NET 4.5

Clicca OK.


3
In Windows 10 le opzioni erano "ASP", ASP.NET.35. "E" ASP.NET 4.6 ". Il controllo 4.6 ha funzionato per me. Grazie!
PeterVermont,

Penso che questa sia la risposta più concisa e di facile comprensione.
themefield,

4

Come indica l'errore - "Questo accade quando la sezione è bloccata a livello padre". Per sbloccare la sezione è possibile utilizzare appcmd.exe ed eseguire il comando seguente:

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

Per ulteriori informazioni sul blocco delle sezioni e su cosa sia un contesto di configurazione principale, consultare la documentazione di IIS .


4

Nel nostro caso, abbiamo lottato con questo errore per alcuni giorni. Si scopre che nel pannello di controllo, i programmi attivano o disattivano le funzionalità di Windows.

Abbiamo selezionato Internet Information Services, servizi Web in tutto il mondo, funzionalità di sviluppo di applicazioni e lì controlliamo il set di funzionalità associate al nostro ambiente di sviluppo. Ad esempio: ASP.NET 4.6. Estensibilità .NET 4.6, ecc.

Funziona!


1
Ciò ha risolto anche il mio problema. Quindi, alla fine, il problema era che dopo aver aggiunto IIS al mio computer locale, non avevo abilitato le funzionalità appropriate. Questo l'ha risolto. Thnks.
jbooker,

3

Prova a sbloccare le impostazioni di configurazione IIS (7.5) pertinenti a livello di server, come segue:

  1. Apri Gestione IIS
  2. Seleziona il server nel riquadro Connessioni
  3. Apri l' Editor di configurazione nel riquadro principale
  4. Nel menu a discesa Sezioni, seleziona la sezione da sbloccare, ad esempio system.webServer> defaultPath
  5. Fai clic su Sblocca attributo nel riquadro a destra
  6. Ripetere l'operazione per tutte le altre impostazioni che è necessario sbloccare
  7. Riavvia IIS (opzionale): selezionare il server nel riquadro Connessioni, fare clic su Riavvia nel riquadro Azioni

Questo è quasi utile, ma su IIS 7 non c'è "defaultPath" in system.webServer
Djorge

Ciò significa che se stai cercando di aggiornare l'autenticazione di Windows, la troverai nel percorso system.webServer -> Sicurezza -> Autenticazione.
Mido,

3

Nel mio caso, c'erano regole per il modulo di riscrittura URL IIS ma non avevo installato quel modulo. Dovresti controllare il tuo web.config se ci sono moduli inclusi ma non installati.


1
Ho appena installato tutto il necessario, ma non è riuscito a farlo funzionare. Quindi, ho appena installato il modulo URL Rewrite e l'ho fatto funzionare! Grazie!
Vitox il

Se manca il modulo di riscrittura URL, il codice di errore non sarà 0x80070021.
Lex Li,

3

Se è Windows 10, apri PowerShell come amministratore ed esegui il comando seguente:

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

1

Web.config descrive che si sta utilizzando l' autenticazione basata su moduli : assicurarsi di abilitare l'autenticazione basata su moduli e disabilitare l' autenticazione anonima in IIS nel menu Autenticazione, per il sito Web in esecuzione in IIS.


0

Per favore <staticContent />linea e cancellato dal web.config.


0

Bene, stiamo usando Amazon Web Services e quindi stiamo cercando di usare script e programmi per superare questo problema. Quindi sono stato a caccia di uno strumento da riga di comando. Quindi prima ho provato il trucco della corsa

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

ma poiché sto utilizzando un Windows Server 2012 basato su cloud, si è lamentato

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 ho cercato su Google e trovato la pagina di supporto Microsoft ufficiale KB2736284 . Quindi esiste uno strumento da riga di comando dism.exe. Quindi ho provato quanto segue

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

ma si è lamentato e ha fornito un elenco di nomi di imprese da provare, quindi li ho provati uno per uno e ho testato la mia pagina WebAPI dopo ognuna e ha funzionato dopo quello in fondo all'elenco.

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 così ora posso navigare al mio sito WebAPI e vedere le informazioni sull'API. Questo dovrebbe aiutare alcune persone. [Tuttavia, non sono ancora completamente fuori dal bosco e non riesco a raggiungere il sito Web da fuori area. Ci sto ancora lavorando.]

Inoltre, ho fatto alcuni passi precedenti seguendo le risposte degli altri. Posso confermare che la seguente delega delle funzioni deve essere modificata (anche se mi piacerebbe trovare uno strumento da riga di comando per questi).

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

-1

Controlla se il server IIS ha installato la funzione di riscrittura degli URL.
Se non è installato, assicurarsi che il file web.config non abbia la configurazione relativa alla riscrittura dell'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=".*"/> ...

Qualche volta abbiamo copiato la configurazione dal server legacy e distribuito immediatamente sul server nuovo di zecca, quindi potremmo riscontrare questo tipo di problema 500.


Se manca la riscrittura dell'URL, il codice di errore non sarà 0x80070021.
Lex Li,


-3

La soluzione che ha funzionato per me è stata quella di eliminare il mio attuale Web.config e aggiungerne uno nuovo. Ciò ha risolto il problema per me


6
Dimettersi dal mio lavoro è più semplice che creare un nuovo web.config. Mai e poi mai provare a farlo.
Shadi Namrouti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.