«Méthode 405 non autorisée» dans IIS7.5 pour la méthode «PUT»

J’utilise le type WebClient pour télécharger des fichiers * .cab sur mon serveur. Côté serveur, j’ai enregistré un gestionnaire HTTP pour le fichier * .cab avec la méthode PUT comme ci-dessous:

   

Mais je reçois toujours une erreur “méthode 405 non autorisée”. La réponse indique que les méthodes autorisées sont les suivantes:

 Headers = {Allow: GET, HEAD, OPTIONS, TRACE Content-Length: 1293 Content-Type: text/html Date: Fri, 27 May 2011 02:08:18 GMT Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET} 

Même si j’autorise explicitement la méthode PUT dans le filtrage des demandes IIS pour mon application Web, la même erreur se produit toujours.

Je pense que c’est un problème lié à IIS. J’espère que quelqu’un pourrait nous éclairer à ce sujet.

Cette erreur est souvent due au module WebDAV qui tente de gérer ce type de requêtes. Une solution simple consiste à le supprimer des modules et des gestionnaires de la section system.webServer dans votre fichier web.config. Voici un exemple de configuration:

         

J’ai activé le suivi des demandes ayant échoué et obtenu les informations suivantes:

   {00000000-0000-0000-0F00-0080000000FA} WebDAVModule 16 405 Method Not Allowed 0 0   

Donc, j’ai désinstallé le WebDAVModule de mon IIS, tout va bien maintenant ~

La fonction de suivi IIS est très utile.

J’ai eu ce problème avec WebDAV lors de l’hébergement d’un projet MVC4 WebApi. Je l’ai contourné en ajoutant cette ligne au site web.config:

     

Comme expliqué ici: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html

La suppression du module WebDAV devrait suffire. Changez simplement votre Web.config:

    

Pris d’ ici et ça a fonctionné pour moi:

1. Accédez au gestionnaire IIS.

2.Cliquez sur votre application.

3.Allez sur “Mappages de gestionnaires”.

4.Dans la liste des fonctionnalités, double-cliquez sur “WebDAV”.

5.Cliquez sur “Ressortingctions de demande”.

6.Dans l’onglet “Verbes”, sélectionnez “Tous les verbes”.

7. Appuyez sur OK.

J’ai essayé la plupart des réponses et malheureusement, aucune n’a été achevée.

Voici ce qui a fonctionné pour moi. Il y a 3 choses à faire sur le site que vous voulez mettre en place (sélectionnez le site):

  1. Ouvrez les WebDav Authoring Rules , puis sélectionnez l’option Disable WebDAV présente dans la barre de droite.

  2. Sélectionnez Modules , recherchez le WebDAV Module et supprimez-le.

  3. Sélectionnez HandlerMapping , recherchez le WebDAVHandler et supprimez-le.

Redémarrez IIS.

Mieux vaut simplement supprimer la fonctionnalité WebDAV inutilisée. Accédez à Programmes et fonctionnalités => Activer ou désactiver les fonctionnalités Windows et désactiver la publication WebDAV sous

Internet Information Services => Services World Wide Web => Fonctionnalités HTTP communes

entrer la description de l'image ici

Pour une raison quelconque, le fait de marquer WebDAVModule comme “supprimer” dans mon fichier web.config ne suffisait pas à résoudre le problème dans mon cas.

J’ai trouvé une autre approche qui a résolu le problème. Si vous êtes dans le même bateau, essayez ceci:

  1. Dans le Gestionnaire des services Internet, sélectionnez l’application qui doit prendre en charge PUT.
  2. Dans la vue des fonctionnalités, recherchez les règles de création WebDAV . Double-cliquez dessus ou sélectionnez Ouvrir une entité dans le menu contextuel (clic droit).
  3. Dans le volet Actions, recherchez et cliquez sur Paramètres WebDAV ….
  4. Dans les parameters WebDAV, recherchez Comportement du filtrage des demandes , puis sélectionnez Autoriser le filtrage des verbes . Définissez Autoriser le filtrage des verbes sur False .
  5. Dans le volet Actions, cliquez sur Appliquer .

Cela empêche WebDAV de rejeter les verbes qu’il ne prend pas en charge, permettant ainsi à un PUT de passer sans problème à votre gestionnaire RESTful.

J’ai eu les mêmes problèmes avec PUT, PATCH et DELETE mais je n’ai rien installé avec WebDav. La résolution 1 de cet article m’a finalement aidé: http://support.microsoft.com/kb/942051

Pour moi, cette erreur ne disparaîtrait pas et autoriserait les méthodes PUT, quoi que je fasse .. désinstaller webdav, mettre la configuration dans web.config pour supprimer webdav des gestionnaires et des modules, et configurer PUT comme verbe autorisé sur les filtres de requête sur iis .. et s’assurer que les mappages de gestionnaires iis gérant la requête ont été configurés avec PUT.

Mon problème était finalement dû à une mauvaise installation des extensions ASP.NET 4.5. Suppression de tout ce qui concerne asp.net des rôles et fonctionnalités du serveur. redémarré. relu les rôles et redémarré. tout fonctionnait avec la configuration ci-dessus.

— Le dessous fera accepter PUT, mais l’enverra au mauvais gestionnaire. –ligne le ci-dessous

Enfin, l’ajout du verbe PUT comme verbe autorisé sur le mappage du gestionnaire TRACE sur iis a fonctionné.

la dernière fois que j’ai eu le même problème sur IIS d’un autre serveur, c’était dû à un ‘/’ manquant à la fin de l’URL car il utilisait probablement un gestionnaire par défaut sans utiliser le document par défaut et maintenant gestionnaires de mappages si rien d’autre n’aide.

J’ai eu ce problème mais rien n’a été lié à WebDAV. Dans mon cas, le client envoyait un message POST à ​​www.monserveur.com/api/chart. Cet appel doit être géré par “ExtensionlessUrlHanlder-Integrated-4.0”, cependant, une structure de fichier locale a été créée dans mon répertoire de serveur “… \ Server \ api \ chart \”. Cela signifiait que le gestionnaire “StaticFile” était appelé à la place. La suppression de ces fichiers locaux a finalement résolu le problème.

Un autre conseil de ma part J’ai utilisé PHP + IIS, et les mappages de gestionnaires pour PHP n’avaient pas le verbe PUT.

Accédez à Gestionnaire des services Internet (IIS) -> Votre site -> Mappages de gestionnaires -> PHPxx_via_FastCGI-> Ressortingctions de demande -> Verbes, puis ajoutez PUT.

C’est tout!

Si le pool d’applications IIS s’exécute en mode classique, vérifiez que vous disposez des éléments suivants dans votre fichier web.config.

   

Dans mon cas, j’avais déplacé Web Deploy sur un autre port, qui était également le port IIS (pas 80). Au début, je n’avais pas réalisé, mais même s’il n’y avait pas d’erreurs s’exécutant sous le même port, il semble que Web Deploy ait répondu en premier lieu au lieu d’IIS pour une raison quelconque, provoquant cette erreur. Je viens de déplacer ma liaison IIS vers un autre port et tout va bien. 😉

Pour empêcher WebDav d’être activé, supprimez l’entrée suivante du ApplicationHost.config:

L’entrée se trouve dans la section modules.

Emplacement exact de la configuration: C:\Windows\System32\inetsrv\config\applicationHost.config

Pour Windows Server 2012 -> Allez dans Gestionnaire de serveur -> Supprimer les rôles et fonctionnalités -> Rôles du serveur -> Serveur Web (IIS) -> Serveur Web -> Fonctionnalités HTTP communes – Désélectionnez Publication WebDAV et supprimez-le -> Redémarrer le serveur.

Un autre module important devant être reconfiguré avant que PUT et DELETE ne fonctionnent est le verbe options

         

Voir aussi ce post: https://stackoverflow.com/a/22018750/9376681