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.

26voto

SliverNinja Points 15924

Il est préférable de supprimer la fonction WebDAV inutilisée. Aller à Programmes et caractéristiques \=> Activer ou désactiver les fonctionnalités de Windows et désactiver Publication WebDAV sous

Services d'information sur Internet \=> Services du World Wide Web \=> Caractéristiques communes du protocole HTTP

enter image description here

19voto

Dunken Points 1099

La suppression du module WebDAV devrait suffire. Il suffit de modifier votre Web.config :

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

12voto

sony vizio Points 2724

Voici ce qui a fonctionné pour moi :

Ouvrez IIS et cliquez sur votre site.

  1. Double-cliquez sur les modules
  2. Cliquer avec le bouton droit de la souris sur WebDavPublishing et le supprimer.
  3. Redémarrer le site Web en cours d'exécution.

11voto

atik sarker Points 198

J'utilisais Angular 8 et l'API .NET core. J'ai ajouté ce qui suit dans le fichier web.config de mon service. Cela résout mon erreur.

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

7voto

Dardan Vokshi Points 76

J'ai eu le même problème, avec une API RESTful fonctionnant sur aspnet core.

Je ne voulais pas désinstaller WebDAV, et j'ai essayé la plupart des solutions décrites ci-dessus. J'ai essayé de définir les verbes="*" à la fois sur le site et sur le serveur lui-même, mais sans succès.

Ce qui a fait l'affaire pour moi, c'est ce qui suit :

IIS Manager -> Sites -> MySite -> HandlerMappings -> aspNetCore -> Editer

-> Request Restrictions -> Access -> None (c'était script).

Après cela, tout a fonctionné, même si j'ai remplacé les options WebDAV d'origine.

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