Erreur HTTP 500.19 et code d'erreur: 0x80070021

219

J'ai une construction webAPI simple par Visual Studio 2013. Cela fonctionne bien lorsque je l'exécute à partir de VS13 mais lorsque je copie le projet dans IIS local, cela me donne l'erreur suivante.

Erreur HTTP 500.19 - Erreur de serveur interne La page demandée n'est pas accessible car les données de configuration associées pour la page ne sont pas valides.

Informations détaillées sur l'erreur:

Module IIS Web Core

Notification BeginRequest

Gestionnaire Pas encore déterminé

Code d'erreur 0x80070021

Erreur de configuration Cette section de configuration ne peut pas être utilisée sur ce chemin. Cela se produit lorsque la section est verrouillée au niveau parent. Le verrouillage est soit par défaut (overrideModeDefault = "Deny"), soit défini explicitement par une balise d'emplacement avec overrideMode = "Deny" ou l'héritage allowOverride = "false".

Fichier de configuration \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Source de configuration:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
Umar Abbas
la source
Il est probable que l'authentification Windows soit désactivée dans IIS, mais requise dans le web.config de votre application.
SpaceBison
@SpaceBison comment puis-je activer l'authentification de fenêtre dans IIS8?
Umar Abbas
Voici le lien de mon fichier webconfig. icopter.co.uk/Webconfig.txt
Umar Abbas
Avez-vous envisagé d'utiliser le module de réécriture d'URL?

Réponses:

346

Vous avez exactement la même erreur et suis venu à cette question. Comme @SpaceBison l'a mentionné dans les commentaires, cette réponse décrit la solution - https://stackoverflow.com/a/12867753/404099 . Je l'ai repéré trop tard et il manque quelques étapes. C'est ce qui a fonctionné pour moi:

Windows Server 2012, IIS 8.5 . Devrait également fonctionner pour d'autres versions.

  • Accédez au gestionnaire de serveur, cliquez sur ajouter des rôles et des fonctionnalités
  • Dans la section des rôles, choisissez: Serveur Web
    • Sous la sous-section Sécurité, choisissez tout (j'ai exclu le résumé, les restrictions IP et l'autorisation d'URL car nous ne les utilisons pas)
    • Sous Développement d'applications, choisissez .NET Extensibility 4.5, ASP.NET 4.5 et les deux entrées ISAPI
  • Dans la section des fonctionnalités, choisissez: NET 3.5, .NET 4.5, ASP.NET 4.5
  • Dans la section du serveur Web, choisissez: Serveur Web (tout), Outils de gestion (console de gestion IIS et service de gestion), Authentification Windows - si vous en utilisez un
Ilia Barahovski
la source
13
Tout ce que j'avais à ajouter était les éléments .NET 4.5 dans la section AppDev et la section Fonctionnalités. L'élément d'extensibilité a également forcé les 2 entrées ISAPI.
Bill
Ces étapes m'aident à résoudre le problème. Merci.
psulek
Enfin, une solution pour résoudre mes maux. Merci, c'est logique et c'est assez simple. Il semble toujours qu'il manque des fonctionnalités et des rôles ces jours-ci ...
Alexandru
le ServerManager n'est pas disponible dans Windows7 Home, comment y remédier?
knocte
1
@knocte - dans Windows 7, vous pouvez saisir le "Désinstaller ou modifier un programme" puis cliquer sur "Activer ou désactiver les fonctionnalités Windows". Ce n'est pas la même chose que le Gestionnaire de serveur, mais vous pouvez installer IIS et les fonctionnalités associées de cette façon.
Ilia Barahovski
122

J'ai eu cette erreur en essayant d'héberger un service WCF dans une application ASP.NET vide. Toute la solution utilisait la plate-forme .NET 4.5, sur IIS 8.5 fonctionnant sous Windows 8.1. Le gotcha devait

  1. Ouvrez "Activer ou désactiver les fonctionnalités Windows"

  2. Accédez à la section WCF sous ASP.NET 4.5 services avancés

  3. Vérifiez l'activation HTTP.

  4. Vous serez invité à redémarrer le système.

    Capture d'écran

Cela devrait corriger le HTTP 500.19!

EDIT 11-FEB-2016 Je viens de recevoir un problème sur Windows 10 Pro, IIS 10, cette fois, c'était un HTTP 404.0. Le correctif est toujours le même, activez «Activation HTTP» sous Fonctionnalités Windows -> Services avancés .NET Framework 4.6 -> Services WCF -> Activation HTTP

Sudhanshu Mishra
la source
Merci beaucoup @dotnetguy! :-) ça a marché pour moi aussi. L'erreur est survenue lorsque j'ai essayé d'héberger l'API Web 2.2 et MVC sur une application ASP.NET vide.
Gurusinghe
@dotnetguy C'est exactement ce qui m'a aidé après ne pas avoir réussi à faire fonctionner IIS avec mon application MVC locale dans Visual Studio. Merci beaucoup. C'est l'activation HTTP !
silkfire
@silkfire heureux d'avoir aidé!
Sudhanshu Mishra
@dotnetguy Merci
Heemanshu Bhalla
@dotnetguy Vous avez le même problème exact et cela l'a résolu! Merci beaucoup! Vous êtes vraiment un gars .Net! : D
Rian
47

J'avais aussi le même problème mais après un brainstorming avec IIS et google pendant plusieurs heures. J'ai trouvé la solution. Cette erreur est due au fait que certains paramètres sont désactivés dans IIS applicationHost.config.

Voici les étapes de la solution:

  1. Aller C:\Windows\System32\inetsrv\config\applicationHost.configet ouvrir dans le bloc-notes
  2. Modifiez la valeur de clé suivante présente dans

    • <section name="handlers" overrideModeDefault="Deny" /> changer cette valeur de "Refuser" à "Autoriser"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> changer cette valeur de "Refuser" à "Autoriser"

Ça a marché pour moi.

SeeTheC
la source
2
Je vous remercie. Après avoir effectué ces étapes, l'erreur suivante est apparue. Je pourrais le résoudre comme décrit ici: stackoverflow.com/a/30594003/434742
Jenny O'Reilly
31

Si vous exécutez IIS sur cet ordinateur pour la première fois, vous devez essayer d'exécuter l'outil d'enregistrement ASP.NET IIS (aspnet_regiis.exe).

Voici comment procéder: Si vous utilisez .net framework v4, ouvrez l'invite de commande en tant qu'administrateur et changez de répertoire dans votre dossier de base .net framework en utilisant:

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

ou, si vous utilisez un ordinateur 64 bits, utilisez:

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

lorsque vous avez réussi à accéder au répertoire approprié, exécutez l'outil d'enregistrement ASP.NET IIS à l'aide de:

aspnet_regiis -i

Si vous utilisez une version de framework .NET différente, remplacez-la simplement v4.0.30319par le nom de dossier approprié.

J'espère que cela t'aides.

Ibrahim Dauda
la source
J'essaie d'exécuter deux projets VS différents sur mon serveur iis (machine virtuelle); on travaille, on ne fonctionne pas ... Ce qui précède a aidé à faire fonctionner le premier; y a-t-il une raison pour que le 2e ne fonctionne pas?
JosephDoggie
7
J'ai utilisé cette méthode dans le passé, mais aspnet_regiis n'est plus pris en charge sur Windows 8.1. Pour enregistrer 4.5, utilisez Programmes et fonctionnalités> Activer ou désactiver les fonctionnalités Windows> Services d'information et d'information> Services World Wide Web> Fonctionnalités de développement d'applications> Vérifiez ASP.NET 4.5 et tout ce dont vous pourriez avoir besoin.
masterwok
1
cela doit être exécuté en tant qu'administrateur (clic droit sur l'icône cmd.exe -> exécuter en tant qu'administrateur), et même si cela peut détecter des erreurs pendant l'opération (et produire un fichier journal), cela a fonctionné pour moi!
knocte
2
Pour IIS 8.5 sur Windows 8.1 (ou Windows Server 2012), cela ne fonctionne pas. J'ai reçu l'invite suivante: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Commencez à installer ASP.NET (4.0.30319.33440). Cette option n'est pas prise en charge sur cette version du système d'exploitation. Les administrateurs doivent plutôt installer / désinstaller ASP.NET 4.5 avec IIS8 à l'aide de la boîte de dialogue «Activer / désactiver les fonctionnalités Windows», l'outil de gestion du Gestionnaire de serveur ou l'outil de ligne de commande dism.exe.
Sudhanshu Mishra
Merci!! Cela fonctionne pour moi avec IIS 10 et Windows 10 :)
Víctor Beltrán
22

J'ai résolu ce problème en procédant comme suit:

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

entrez la description de l'image ici

GIOESCOM
la source
10

Sur Windows 8.1, IIS 8.5, la solution pour moi était d'enregistrer 4.5 depuis le panneau de configuration:

Programmes et fonctionnalités> Activer ou désactiver les fonctionnalités Windows> Information Information Services> Services World Wide Web> Fonctionnalités de développement d'applications> Sélectionnez ASP.NET 4.5

Cliquez sur OK.

Jon
la source
3
Sous Windows 10, les choix étaient «ASP», ASP.NET.35. »Et« ASP.NET 4.6 ». La vérification de 4.6 a fonctionné pour moi. Merci!
PeterVermont
Je pense que c'est la réponse la plus concise et la plus facile à comprendre.
themefield
4

Comme l'erreur indique - "Cela se produit lorsque la section est verrouillée au niveau parent". Pour déverrouiller la section, vous pouvez utiliser appcmd.exe et exécuter la commande suivante:

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

Pour plus d'informations sur le verrouillage de section et sur le contexte de configuration parent, reportez-vous à la documentation IIS .

Taras Alenin
la source
4

Dans notre cas, nous avons eu du mal avec cette erreur pendant plusieurs jours. Il s'avère que dans le panneau de configuration, les programmes, activez ou désactivez les fonctionnalités de Windows.

Nous avons sélectionné Internet Information Services, World Wide Web Services, Application development features et là nous vérifions l'ensemble des fonctionnalités associées à notre environnement de développement. Par exemple: ASP.NET 4.6. Extensibilité .NET 4.6, etc.

Ça marche!

Javier Livio
la source
1
Cela a également résolu mon problème. Donc, le problème était finalement qu'après avoir ajouté IIS à ma machine locale, je n'ai pas activé les fonctionnalités appropriées. Cela l'a résolu. Merci.
jbooker
3

Essayez de déverrouiller les paramètres de configuration IIS (7.5) pertinents au niveau du serveur, comme suit:

  1. Ouvrez IIS Manager
  2. Sélectionnez le serveur dans le volet Connexions
  3. Ouvrez l' éditeur de configuration dans le volet principal
  4. Dans la liste déroulante Sections, sélectionnez la section à déverrouiller, par exemple system.webServer> defaultPath
  5. Cliquez sur Déverrouiller l'attribut dans le volet droit
  6. Répétez pour tous les autres paramètres que vous devez déverrouiller
  7. Redémarrez IIS (facultatif) - Sélectionnez le serveur dans le volet Conncetions, cliquez sur Redémarrer dans le volet Actions
Chris
la source
C'est presque utile mais sur IIS 7 il n'y a pas de "defaultPath" sous system.webServer
Djorge
Par cela, il veut dire que si vous cherchez à mettre à jour l'authentification Windows, vous le trouverez dans le chemin system.webServer -> Sécurité -> Authentification.
Mido
3

Dans mon cas, il y avait des règles pour le module de réécriture d'URL IIS mais je n'avais pas installé ce module. Vous devriez vérifier votre web.config s'il y a des modules inclus mais non installés.

HasanG
la source
1
Je viens d'installer tout le reste, mais je ne l'ai toujours pas fait fonctionner. Ensuite, je viens d'installer le module de réécriture d'URL et de le faire fonctionner! Merci!
Vitox
Si le module de réécriture d'URL est manquant, le code d'erreur ne sera pas 0x80070021.
Lex Li
3

S'il s'agit de Windows 10, ouvrez le PowerShell en tant qu'administrateur et exécutez la commande suivante:

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

Votre web.config décrit que vous utilisez l' authentification par formulaire - assurez-vous d'activer l'authentification par formulaire et de désactiver l' authentification anonyme dans IIS sous le menu Authentification, pour le site Web qui s'exécute dans IIS.

SpaceBison
la source
0

Veuillez <staticContent />le doubler et le supprimer du web.config.

Erdogan
la source
0

Eh bien, nous utilisons Amazon Web Services et nous cherchons donc à utiliser des scripts et des programmes pour résoudre ce problème. J'ai donc été à la recherche d'un outil en ligne de commande. Alors j'ai d'abord essayé l'astuce de courir

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

mais parce que j'exécute un Windows Server 2012 basé sur le cloud, il s'est plaint

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.

et j'ai recherché sur Google et trouvé la page de support Microsoft KB2736284 officielle . Il existe donc un outil en ligne de commande dism.exe. J'ai donc essayé ce qui suit

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

mais il s'est plaint et a donné une liste de noms de fonctionnalités à essayer, alors je les ai essayés un par un et j'ai testé ma page Web WebAPI après chacun et cela a fonctionné après celui du bas de la liste.

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 

Et maintenant, je peux naviguer sur mon site WebAPI et voir les informations sur l'API. Cela devrait aider quelques personnes. [Cependant, je ne suis pas encore totalement sorti du bois et je ne peux pas accéder au site Web depuis l'extérieur de la boîte. Travaille toujours dessus.]

De plus, j'ai fait quelques étapes précédentes en suivant les réponses d'autres personnes. Je peux confirmer que la délégation de fonctionnalités suivante doit être modifiée (bien que j'aimerais trouver un outil de ligne de commande pour ceux-ci).

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
la source
-1

Vérifiez si le serveur IIS a installé la fonction de réécriture d'URL.
S'il n'est pas installé, assurez-vous que votre fichier web.config n'a pas la configuration associée à la réécriture d'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=".*"/> ...

Parfois, nous avons copié la configuration du serveur hérité et déployé immédiatement sur un tout nouveau serveur, puis nous pouvons rencontrer ce type de problème 500.

Frank Myat Thu
la source
Si la réécriture d'URL est manquante, le code d'erreur ne sera pas 0x80070021.
Lex Li
-3

La solution qui a fonctionné pour moi a été de supprimer mon Web.config actuel et d'en ajouter un nouveau. Cela a résolu le problème pour moi

Pheko Moroke
la source
6
Démissionner de mon travail est plus facile que de créer un nouveau web.config. N'essayez jamais de le faire.
Shadi Namrouti