web-dev-qa-db-fra.com

WebDAV et WebAPI ensemble provoquent une erreur: le gestionnaire "ExtensionlessUrlHandler-Integrated-4.0" contient un module incorrect "ManagedPipelineHandler" dans sa liste de modules

WebDAV est installé et fonctionne sur mon site. En tant que sous-site virtuel, j’ai un site Web MVI MVC, l’API fonctionne très bien, jusqu’à ce que j’essaie d’envoyer une requête PUT, puis l’erreur ci-dessous:

Erreur HTTP 500.21 - Erreur interne du serveur

Le gestionnaire "ExtensionlessUrlHandler-Integrated-4.0" a un mauvais module "ManagedPipelineHandler" dans sa liste de modules

Si je désactive WebDAV, tout fonctionne correctement et je n’obtiens aucune erreur. Cela se produit uniquement lorsque WebDAV est activé.

J'ai tout le code suivant dans mon web.config:

<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

J'ai essayé de jouer avec différents pools d'applications.

J'ai également fatigué toutes les choses mentionnées dans toutes ces questions:

Comment se débarrasser de cette erreur Le gestionnaire "PageHandlerFactory-Integrated" a un mauvais module "ManagedPipelineHandler" dans sa liste de modules

Le gestionnaire "ExtensionlessUrlHandler-Integrated-4.0" a un mauvais module "ManagedPipelineHandler" dans sa liste de modules

Comment résoudre ce problème: Le gestionnaire "PageHandlerFactory-Integrated" a un module incorrect "ManagedPipelineHandler" dans sa liste de modules

Rien de tout cela n'a résolu mon problème, y a-t-il autre chose que je n'ai pas essayé?

12
jblaske

Nous avons fini par aller chez Microsoft avec cela, ils l'ont examiné pendant plusieurs semaines avant de revenir en disant que il n'est pas possible d'exécuter WebDAV et WebAPI sur le même site .

Ils essaieront de résoudre ce problème dans une prochaine version d'IIS.

22
jblaske

@jblaske a une bonne réponse.

Si vous souhaitez le supprimer temporairement, alors peut-être que cet article est la meilleure solution.

Si vous souhaitez supprimer le gestionnaire tous ensemble, procédez comme suit.

  1. Ouvrez IIS et accédez au site en question.
  2. Cliquez sur "Mappages de gestionnaires"
  3. Trouvez le gestionnaire nommé "WebDAV"
  4. Sélectionnez-le et supprimez-le

Ceci est mon post original .

2
christo8989

J'ai commencé à avoir cette erreur après avoir supprimé manuellement le module et le gestionnaire WebDAV de IIS pour que PUT fonctionne. J'ai dû supprimer le rôle de serveur "WebDAV Publishing" pour remédier à cette erreur. Après avoir supprimé ce rôle et redémarré IIS, PUT fonctionne correctement.

 enter image description here

1
Rajiv

Vous pourriez avoir un problème de frappe dans la déclaration des gestionnaires. Le blog de Thomas Marquardt dit

5.0 Dépannage

Si vous recevez une erreur similaire à celle ci-dessous, votre section Est probablement non valide. 

Erreur HTTP 500.21 - Le gestionnaire d'erreurs de serveur interne "" a Un module incorrect "ManagedPipelineHandler" dans sa liste de modules Vous avez probablement Un mappage de gestionnaire qui n'a pas la condition préalable correcte. IIS ne pardonne pas les fautes de frappe et les conditions préalables sont Sensibles à la casse. Le texte doit être preCondition = "integratedMode" ou PreCondition = "classicMode".

En outre, une autre suggestion tirée des commentaires sur cet article:

Andrew Johnson 25 janvier 2011 03h20 #:

J'ai trouvé que je pouvais aussi obtenir le "Gestionnaire a un mauvais Module ManagedPipelineHandler dans sa liste de modules" si le gestionnaire a RequireAccess = "None". Pour moi, changer ceci en requireAccess = "Read" A fait disparaître l'erreur.

Ce commentaire peut s’appliquer à votre cas car je constate que, dans applicationHost.config, l’entrée pour les gestionnaires WebDav est (notez le requredAccess="None"):

<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
0
Ciprian Teiosanu