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.

278voto

Davide Icardi Points 2215

Cette erreur est souvent causée par le module WebDAV qui tente de traiter ce type de demandes. Une solution simple consiste à supprimer cette erreur des modules et des gestionnaires de la fonction system.webServer juste à l'intérieur de votre fichier web.config. Voici un exemple de configuration :

<system.webServer>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
    <handlers>
        <remove name="WebDAV" />
    </handlers>
</system.webServer>

58voto

smwikipedia Points 5491

J'ai activé le traçage des requêtes échouées et j'ai obtenu les informations suivantes :

 <EventData>
  <Data Name="ContextId">{00000000-0000-0000-0F00-0080000000FA}</Data>
  <Data Name="ModuleName">WebDAVModule</Data>
  <Data Name="Notification">16</Data>
  <Data Name="HttpStatus">405</Data>
  <Data Name="HttpReason">Method Not Allowed</Data>
  <Data Name="HttpSubStatus">0</Data>
  <Data Name="ErrorCode">0</Data>
  <Data Name="ConfigExceptionInfo"></Data>
 </EventData>

J'ai donc désinstallé le WebDAVModule de mon IIS, et tout est rentré dans l'ordre~

La fonction de traçage d'IIS est très utile.

38voto

coding_idiot Points 3358

J'ai essayé la plupart des réponses et malheureusement, aucune d'entre elles n'a abouti.

Voici ce qui a fonctionné pour moi. Il y a 3 choses à faire sur le site pour lequel vous voulez faire un PUT (sélectionnez le site) :

  1. Ouvrir WebDav Authoring Rules puis sélectionnez Disable WebDAV présente dans la barre de droite.

  2. Sélectionner Modules , trouver la WebDAV Module et l'enlever.

  3. Sélectionner HandlerMapping , trouver la WebDAVHandler et l'enlever.

Redémarrer IIS.

32voto

goran85 Points 443

Tiré de aquí et cela a fonctionné pour moi :

  1. Allez dans le gestionnaire IIS.

  2. Cliquez sur votre application.

  3. Allez dans "Handler Mappings".

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

  5. Cliquez sur "Demander des restrictions".

  6. Dans l'onglet "Verbes", sélectionnez "Tous les verbes".

  7. Appuyez sur OK.

27voto

Nick Points 2426

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

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

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

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