J'utilise WebClient
type pour télécharger des fichiers * .cab sur mon serveur. Du côté du serveur, j'ai enregistré un gestionnaire HTTP pour le 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 a déclaré 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 demandes 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 là-dessus.
J'ai activé le suivi des demandes ayant échoué et j'ai obtenu les informations suivantes:
Donc, j'ai désinstallé le WebDAVModule de mon IIS, tout va bien maintenant ~
La fonctionnalité de traçage IIS est très utile.
la source
Application_BeginRequest
méthode, comme mentionné dans cette réponse stackoverflow.com/a/14631068/827168 . Mais votre réponse est meilleure que toutes les autres car elle aide à repérer le problème au lieu d'appliquer un correctif aléatoire :)Handler "WebDAV" has a bad module "WebDAVModule" in its module list
.J'ai eu ce problème avec WebDAV lors de l'hébergement d'un projet MVC4 WebApi. Je l'ai contourné en ajoutant cette ligne au web.config:
Comme expliqué ici: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html
la source
Pris d' ici et cela a fonctionné pour moi:
1 Accédez au Gestionnaire IIS.
2.Cliquez sur votre application.
3. Allez dans "Mappages de gestionnaires".
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.
la source
J'ai essayé la plupart des réponses et malheureusement, aucune d'entre elles n'a fonctionné.
Voici ce qui a fonctionné pour moi. Il y a 3 choses à faire sur le site pour lequel vous voulez PUT (sélectionnez le site):
Ouvrez
WebDav Authoring Rules
puis sélectionnez l'Disable WebDAV
option présente dans la barre de droite.Sélectionnez
Modules
, recherchezWebDAV Module
et supprimez-le.Sélectionnez
HandlerMapping
, recherchezWebDAVHandler
et supprimez-le.Redémarrez IIS.
la source
PUT
commencé à travailler.La suppression du module WebDAV devrait être suffisante. Changez simplement votre Web.config:
la source
Il est préférable de supprimer simplement la fonction WebDAV inutilisée. Allez dans Programmes et fonctionnalités => Activer ou désactiver les fonctionnalités Windows et désactiver la publication WebDAV sous
Internet Information Services => World Wide Web Services => Fonctionnalités HTTP courantes
la source
Pour une raison quelconque, marquer WebDAVModule comme "supprimer" dans mon web.config n'était pas suffisant pour résoudre le problème dans mon cas.
J'ai trouvé une autre approche qui a résolu le problème. Si vous êtes dans le même bateau, essayez ceci:
Cela empêche WebDAV de rejeter les verbes qu'il ne prend pas en charge, permettant ainsi à un PUT de circuler vers votre gestionnaire RESTful sans être perturbé.
la source
Un autre conseil de ma part. J'ai utilisé PHP + IIS, et les mappages de gestionnaire pour PHP n'avaient pas le verbe PUT.
Allez dans IIS Manager-> Votre site-> Handler Mappings-> PHPxx_via_FastCGI-> Request Restrictions-> Verbs, puis ajoutez PUT.
C'est tout!
la source
Un autre module important qui doit être reconfiguré avant que PUT et DELETE ne fonctionnent est le verbe d'options
Voir également cet article: https://stackoverflow.com/a/22018750/9376681
la source
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
la source
J'utilisais Angular 8 et j'étais l'API de base .NET. J'ajoute ce qui suit dans mon fichier de service web.config. Cela résout mon erreur.
la source
Pour moi, cette erreur ne disparaîtrait pas et n'autoriserait pas 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 verbe autorisé sur les filtres de requête sur iis .. et assurez-vous que les mappages de gestionnaire traitant la requête ont configuré PUT.
Mon problème était finalement dû à une mauvaise installation des extensions ASP.NET 4.5. Suppression de tout ce qui concerne asp.net des rôles et des fonctionnalités du serveur. redémarré. a lu les rôles et redémarré. tout a fonctionné avec la configuration ci-dessus.
--- Ce qui suit fera accepter PUT, mais l'enverra au mauvais gestionnaire. --ignorez ce qui suit
enfin, l'ajout du verbe PUT comme verbe autorisé sur le mappage du gestionnaire TRACE sur iis a fonctionné. puisque j'avais activé le traçage des erreurs échouées, et ce verbe n'autorisait pas le verbe.
la dernière fois que j'ai eu le même problème sur l'IIS d'un autre serveur, c'était dû à un '/' manquant à la fin de l'URL car il utilisait un gestionnaire par défaut sans utiliser probablement le document par défaut et maintenant je me rends compte que .. alors vérifiez IIS mappages de gestionnaires si rien d’autre n’aide.
la source
J'ai eu ce problème mais rien de lié à WebDAV n'était le problème. Dans mon cas, le client envoyait un POST à www.myServer.com/api/chart. Cet appel doit être géré par le "ExtensionlessUrlHanlder-Integrated-4.0", cependant, d'une manière ou d'une autre, une structure de fichier locale a été créée dans le répertoire de mon serveur "... \ Server \ api \ chart \". Cela signifiait que le gestionnaire "StaticFile" était appelé à la place. La suppression de ces fichiers locaux a finalement résolu le problème.
la source
Voici ce qui a fonctionné pour moi:
Ouvrez IIS et cliquez sur votre site.
1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.
la source
Pour Windows Server 2012 -> Accédez au Gestionnaire de serveur -> Supprimer les rôles et fonctionnalités -> Rôles du serveur -> Serveur Web (IIS) -> Serveur Web -> Fonctionnalités HTTP communes -> Décochez Publication WebDAV et supprimez-le -> Redémarrez le serveur.
la source
Si le pool d'applications IIS s'exécute en mode classique, assurez-vous que vous disposez des éléments suivants dans votre web.config
la source
Dans mon cas, j'avais déplacé Web Deploy vers un autre port, qui était également le port IIS (et non 80). Je ne m'en suis pas rendu compte au début, mais même s'il n'y avait aucune erreur s'exécutant tous les deux sous le même port, il semble que Web Deploy réponde probablement en premier à la place d'IIS pour une raison quelconque, provoquant cette erreur. Je viens de déplacer ma liaison IIS vers un autre port et tout va bien. ;)
la source
Pour empêcher WebDav d'être activé du tout, supprimez l'entrée suivante de ApplicationHost.config:
<add name="WebDAVModule" />
L'entrée se trouve dans la section modules.
Emplacement exact de la configuration:
C:\Windows\System32\inetsrv\config\applicationHost.config
la source
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 remèdes décrits 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 le truc pour moi était le suivant:
Gestionnaire IIS -> Sites -> MySite -> HandlerMappings -> aspNetCore -> Modifier
-> Restrictions de demande -> Accès -> Aucune (c'était Script).
Après cela, tout a fonctionné, même si j'ai remplacé les options WebDAV d'origine.
la source