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

j'utilise WebClient type à télécharger *.les fichiers du taxi sur mon serveur. Du côté serveur, j'ai enregistré un gestionnaire HTTP pour *.fichier 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" méthode 405 non autorisée". La réponse dit 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 de requête IIS pour mon application web, la même erreur se produit.

je soupçonne qu'il s'agit d'un problème lié à L'IIS. Je suis en espérant que quelqu'un pourrait jeter de la lumière sur cela pour moi.

86
demandé sur Michael 2011-05-27 06:20:34

17 réponses

cette erreur est souvent causée par le module WebDAV qui essaie de traiter ce genre de requêtes. Une solution facile est de le supprimer des modules et des gestionnaires de la section system.webServer juste à l'intérieur de votre web.fichier de configuration. Voici un exemple de configuration:

<system.webServer>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
    <handlers>
        <remove name="WebDAV" />
    </handlers>
</system.webServer>
143
répondu Davide Icardi 2016-11-17 08:46:03

j'ai activé le traçage de requête défectueux, 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>

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

la fonction de traçage de L'IIS est très utile.

36
répondu smwikipedia 2011-06-03 06:35:17

J'ai eu ce problème avec WebDAV lors de l'hébergement d'un projet WebApi MVC4. J'ai contourné ça en ajoutant cette ligne sur le 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

19
répondu Nick 2012-08-27 21:27:35

tiré de ici et il a travaillé pour moi:

1.Allez à Gestionnaire des services IIS.

2.Cliquez sur votre application.

3.Allez à "handler Mappings".

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

5.Cliquez sur"Request Restrictions".

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

7.Appuyez sur OK.

15
répondu goran85 2017-05-23 12:03:06

supprimer le module WebDAV devrait suffire. Il suffit de changer votre Web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule" />
14
répondu Dunken 2013-06-27 12:32:10

j'ai essayé la plupart des réponses et malheureusement, aucune d'elles n'a fonctionné dans l'achèvement.

voilà ce qui a marché pour moi. Il y a 3 choses à faire sur le site que vous souhaitez mettre (sélectionnez le site):

  1. Ouvrir WebDav Authoring Rules , puis sélectionnez Disable WebDAV option sur la barre de droite.

  2. sélectionner Modules , trouver le WebDAV Module et le supprimer.

  3. sélectionner HandlerMapping , trouver le WebDAVHandler et le supprimer.

redémarrer IIS.

12
répondu coding_idiot 2015-04-02 14:14:16

il est préférable de simplement supprimer la fonctionnalité WebDAV non utilisée. Aller à Programmes et Fonctionnalités => Fonctionnalités Windows Activer ou Désactiver et désactiver la Publication WebDAV sous

Internet Information Services = > World Wide Web Services = > Common HTTP Features

enter image description here

5
répondu SliverNinja - MSFT 2017-05-12 21:26:37

pour n'importe quelle raison, marquant WebDAVModule comme" supprimer " dans mon web.config n'était pas suffisante pour résoudre le problème dans mon cas.

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

  1. dans le Gestionnaire du SII, sélectionnez l'application qui doit supporter PUT.
  2. Dans l'Affichage des Fonctionnalités, trouver Règles de Création WebDAV . Double-cliquez dessus, ou sélectionnez Ouvrir La fonctionnalité dans le menu contextuel (clic droit).
  3. dans le volet Actions, trouvez et cliquez sur paramètres WebDAV... .
  4. dans les paramètres WebDAV, trouvez Request Filtering Behavior , et Sous cela, trouvez Allow Verb Filtering . Définir autoriser le filtrage des verbes à False .
  5. dans le volet Actions, cliquez sur appliquer .

cela empêche WebDAV de rejeter les verbes qu'il ne supporte pas, permettant ainsi à une PUT de passer à travers à votre gestionnaire reposant sans être imbriqué.

4
répondu Dan K 2013-12-11 18:09:56

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

3
répondu gust1n 2013-07-27 13:12:30

pour moi, cette erreur ne voulait pas disparaître et permettre 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 un verbe autorisé sur les filtres de requête sur iis.. et assurez-vous que les mappages de handler IIS traitant la demande ont été configurés..

mon problème a été éventuellement dû à une mauvaise installation de ASP.NET 4.5 Extensions. Tout ce qui concerne asp.net des rôles de serveur et caractéristique. redémarrer. readded les rôles et redémarré. tout a fonctionné avec config ci-dessus.

- - - le bas fera PUT être accepté, mais l'enverra au mauvais gestionnaire. -- ignorez le dessous

enfin, l'ajout du verbe PUT comme verbe autorisé sur la cartographie TRACE handler sur iis a fonctionné.. depuis que j'avais activé le traçage d'erreur raté, et ce verbe ne permettait pas le verbe.

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

2
répondu Harish Palaniappan 2014-08-23 14:49:55

j'ai eu ce problème mais rien en rapport avec WebDAV était le problème. Dans mon cas, le client envoyait un courrier à www.myServer.com/api/chart. Cet appel doit être traité par "ExtensionlessUrlHanlder-Integrated-4.0", cependant, une structure de fichier locale a été créée dans le répertoire de mon serveur"...\Serveur\api\tableau\". Cela signifiait que le gestionnaire" StaticFile " était appelé à la place. La suppression de ces fichiers locaux a finalement résolu le problème.

2
répondu Atilio Jobson 2016-04-04 21:19:26

un autre tuyau de moi. J'ai utilisé PHP + IIS, et le Gestionnaire Mappings pour PHP n'avait pas le verbe PUT.

aller à IIS Manager->votre site->handler Mappings->PHPxx_via_FastCGI->Request Restrictions->verbes, puis Ajouter PUT.

C'est ça!

1
répondu Stefan Pintilie 2018-03-14 11:53:18

Pour Windows server 2012 -> Allez dans le gestionnaire de Serveur -> Supprimer des Rôles et Fonctionnalités -> Rôles de Serveur> Serveur Web (IIS) -> Serveur Web -> Fonctionnalités HTTP Communes -> Décocher la Publication WebDAV et la supprimer -> Redémarrer le serveur.

1
répondu Savan Gadhiya 2018-06-25 09:43:26

si IIS app pool tourne en mode classique, assurez-vous que vous avez ce qui suit dans votre web.config

<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />

    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
0
répondu Arjun Mukherji 2015-07-31 22:37:54

dans mon cas, J'avais relocalisé Web Deploy vers un autre port, qui était aussi le port IIS (pas 80). Je ne m'en suis pas rendu compte au début, mais même s'il n'y avait aucune erreur sous le même port, il semble que Web Deploy ait probablement répondu en premier au lieu de IIS pour une raison quelconque, causant cette erreur. Je viens de déplacer mon IIS reliure à un autre port et tout va bien. ;)

0
répondu James Wilkins 2016-05-06 21:56:36

pour éviter que WebDav ne soit activé, supprimez l'entrée suivante de L'onglet ApplicationHost.config: <add name="WebDAVModule" />

l'entrée se trouve dans la section modules.

localisation exacte de la config: C:\Windows\System32\inetsrv\config\applicationHost.config

0
répondu Yush0 2018-05-31 12:32:49

un autre module important qui doit être reconfiguré avant de mettre et supprimer fonctionnera est le verbe

<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

0
répondu Michael Radhuber 2018-07-04 11:39:05