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.

6voto

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

<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="OPTIONSVerbHandler" />
<remove name="WebDAV" />
<add name="OPTIONSVerbHandler" path="*" verb="*" modules="ProtocolSupportModule" resourceType="Unspecified" requireAccess="Script" />
</handlers>

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

5voto

Dan K Points 341

Pour une raison quelconque, le fait de marquer WebDAVModule comme "remove" dans mon web.config n'a pas suffi à résoudre le problème dans mon cas.

J'ai trouvé une autre approche qui a fait résoudre le problème. Si vous êtes dans le même cas, essayez ceci :

  1. Dans le gestionnaire IIS, sélectionnez l'application qui doit prendre en charge PUT.
  2. Dans la vue Fonctionnalités, recherchez Règles de création de WebDAV . Double-cliquez dessus ou sélectionnez Fonctionnalité ouverte dans le menu contextuel (clic droit).
  3. Dans le volet Actions, recherchez et cliquez sur Paramètres WebDAV... .
  4. Dans les paramètres WebDAV, recherchez Comportement de filtrage des demandes et sous celui-ci, trouver Autoriser le filtrage des verbes . Ensemble Autoriser le filtrage des verbes à Faux .
  5. Dans le volet Actions, cliquez sur Appliquer .

Cela empêche WebDAV de rejeter les verbes qu'il ne prend pas en charge, ce qui permet à un PUT de passer sans encombre à votre gestionnaire RESTful.

5voto

Stefan Pintilie Points 129

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

Allez dans le Gestionnaire IIS->Votre site->Handler Mappings->PHPxx_via_FastCGI->Request Restrictions->Verbs, puis ajoutez PUT.

C'est tout !

4voto

gust1n Points 53

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

3voto

Loyola Edwin Points 1

Pour asp.net core 5

IIS-> Sites -> MySite -> HandlerMappings -> aspNetCore -> Request Restrictions -> Access -> None (c'était script).

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