"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.
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>
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.
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
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.
supprimer le module WebDAV devrait suffire. Il suffit de changer votre Web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
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):
-
Ouvrir
WebDav Authoring Rules
, puis sélectionnezDisable WebDAV
option sur la barre de droite. -
sélectionner
Modules
, trouver leWebDAV Module
et le supprimer. -
sélectionner
HandlerMapping
, trouver leWebDAVHandler
et le supprimer.
redémarrer IIS.
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
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:
- dans le Gestionnaire du SII, sélectionnez l'application qui doit supporter PUT.
- 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).
- dans le volet Actions, trouvez et cliquez sur paramètres WebDAV... .
- dans les paramètres WebDAV, trouvez Request Filtering Behavior , et Sous cela, trouvez Allow Verb Filtering . Définir autoriser le filtrage des verbes à False .
- 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é.
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
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.
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.
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!
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.
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" />
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. ;)
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
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