152 votes

"405 method not allowed" dans IIS7.5 pour la méthode "PUT

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

 <add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />

Mais j'obtiens toujours une erreur "405 method not allowed". 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 requêtes IIS pour mon application web, la même erreur se produit toujours.

Je soupçonne qu'il s'agit d'un problème lié à IIS. J'espère que quelqu'un pourra m'éclairer à ce sujet.

2voto

Pour moi, cette erreur ne disparaissait pas et autorisait les méthodes PUT, quoi que j'aie fait désinstaller webdav, mettre une configuration dans web.config pour supprimer webdav des handlers et des modules, et configurer PUT comme verbe autorisé dans les filtres de requête sur iis et s'assurer que les mappings de handler iis traitant la requête avaient PUT de configuré .

Mon problème était finalement dû à une mauvaise installation des extensions ASP.NET 4.5. J'ai supprimé tout ce qui était lié à asp.net dans les rôles et fonctionnalités du serveur. j'ai redémarré. j'ai réintroduit les rôles et j'ai redémarré. tout fonctionnait avec la configuration ci-dessus.

--- Le texte ci-dessous permet d'accepter PUT, mais l'envoie au mauvais gestionnaire. --ignorez ce qui suit

enfin, l'ajout du verbe PUT comme verbe autorisé dans le mappage du gestionnaire TRACE sur iis a fonctionné puisque j'avais activé la traçabilité des erreurs, et que ce verbe n'était pas autorisé.

la dernière fois que j'ai eu le même problème sur un autre serveur IIS, c'était dû à un '/' manquant à la fin de l'URL car il utilisait un handler par défaut sans utiliser le document par défaut probablement et maintenant je m'en rends compte donc vérifiez les mappings de handler d'IIS si rien d'autre ne vous aide.

2voto

Atilio Jobson Points 439

J'ai eu ce problème, mais il n'était pas lié à WebDAV. Dans mon cas, le client envoyait un POST à www.myServer.com/api/chart. Cet appel devrait être traité par "ExtensionlessUrlHanlder-Integrated-4.0", mais une structure de fichier locale a été créée dans le répertoire de mon 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.

2voto

Savan Gadhiya Points 804

Pour Windows server 2012 -> Aller dans Gestionnaire de serveur -> Supprimer les rôles et fonctionnalités -> Rôles de serveur -> Serveur Web (IIS) -> Serveur Web -> Fonctionnalités HTTP communes -> Décocher l'option Publication WebDAV et la supprimer -> Redémarrer le serveur.

2voto

Bhadresh Patel Points 469

J'ai le même problème pour les requêtes PUT et DELETE dans IIS10 pour asp.net core 5.

Je viens d'ajouter les lignes ci-dessous dans web.config et le problème est résolu.

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
</system.webServer>

Vous pouvez également résoudre le problème d'une autre manière à partir d'IIS.

Dans IIS, sélectionnez l'application

Add rules to allow HTTP verbs in Request Filtering (But this alone doesn't work).
Go to "Modules", then select the "WebDAV Publishing" module and remove it.
Go to "Handler Mappings", then select the "WebDAV" and remove it.
in cmd run IISRESET

1voto

Voici ma solution, alhamdulillah elle a fonctionné.

  1. Ouvrez le Bloc-notes en tant qu'administrateur.
  2. Ouvrir ce fichier %windir% \system32\inetsrv\config\applicationhost.config
  3. Appuyez sur Ctrl-F pour trouver le mot "handlers accessPolicy".
  4. Ajouter le mot "DELETE" après le mot "GET,HEAD,POST".
  5. La phrase deviendra <add name="PHP_via_FastCGI" path="*.php" verb="GET,HEAD,POST,DELETE"
  6. Le mot "PHP_via_FastCGI" peut être remplacé par d'autres mots tels que "PHP_via_FastCGI1" ou "PHP_via_FastCGI2".
  7. Enregistrer le fichier.

Référence : https://learn.microsoft.com/en-US/troubleshoot/iis/http-error-405-website

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X