J'ai écrit le service REST à l'aide de l'API Web ASP.NET. J'essaie d'envoyer une demande HttpDelete, mais j'obtiens l'erreur suivante:
405 - Le verbe HTTP utilisé pour accéder à cette page n'est pas autorisé
Je pense que je suis proche de la solution, j'ai découvert que je devais activer la gestion à distance IIS, aller à la section Mappages des gestionnaires et ajouter le verbe DELETE à la position appropriée ... mais le problème est qu'il y a beaucoup de positions différentes sur la liste ... (qc comme ici: http://www.somacon.com/p126.php ).
Lequel dois-je modifier? Peu d'entre eux n'ont pas d'extension, par exemple "ExtensionUrlHandler-Integrated-4.0" et j'y ai ajouté le verbe DELETE, mais cela ne fonctionne toujours pas ...
C'était juste une photo dans le noir pour modifier celle-là, alors devrais-je modifier une position différente? Si oui, lequel? Ou y a-t-il autre chose que je devrais faire?
Le même service Web fonctionne parfaitement sur mon service local, donc je suppose que le problème vient de l'IIS distant ...
Salutations
Réponses:
La cause commune de cette erreur est WebDAV . Assurez-vous de le désinstaller.
la source
Vous n'avez pas besoin de désinstaller WebDAV, ajoutez simplement ces lignes au web.config:
la source
Modifiez votre fichier Web.Config comme ci-dessous
la source
Modifiez votre fichier Web.Config comme ci-dessous. Cela agira comme du charme.
Dans le nœud,
<system.webServer>
ajoutez ci-dessous une partie du codeAprès l'ajout, votre Web.Config ressemblera à ci-dessous
la source
J'ai eu ce problème et j'ai résolu ce qui suit:
Sélectionnez le site backend
dans la vue des fonctionnalités: ouvrir le mappage des gestionnaires
la source
Si aucune des solutions ci-dessus n'a résolu votre problème comme dans mon cas (toujours bloqué avec mon module RestClient face à 405), essayez de demander votre Api avec un outil comme Postman ou Fiddler. Je veux dire que le problème peut être ailleurs comme une demande mal formatée.
Je découvre que mon module RestClient demandait un 'Put' avec un paramètre Id pas bien formaté:
au lieu de
Incidieusement, une demande mal formatée renvoie 405 - Méthode non autorisée (IIS 7.5)
la source
Peu fréquent mais peut aider certains.
Nous obtenions un 405 «Méthode non autorisée», sur une méthode décorrée HttpPut.
Notre problème semble rare, car nous avons accidentellement utilisé l' attribut [HttpPut] de System.Web.Mvc et non de System.Web.Http
La raison en est que resharper a suggéré la version .Mvc, où, comme d'habitude, System.Web.Http est déjà référencé lorsque vous dérivez directement d' ApiController, nous utilisions une classe qui étendait ApiController.
la source
Cela s'est produit (méthode 405 non autorisée) lorsque la méthode de publication de l'API Web que j'appelais avait des types primitifs pour les paramètres, au lieu d'un type complexe accessible à partir du corps. Ainsi:
Cela a fonctionné:
Cela n'a pas:
la source
Cette erreur vient du gestionnaire de fichiers statiques - qui par défaut ne filtre aucun verbe, mais ne peut probablement traiter que HEAD et GET.
Et c'est parce qu'aucun autre gestionnaire n'est venu à l'assiette et a dit qu'il pouvait gérer DELETE.
Puisque vous utilisez WEBAPI, qui en raison du routage n'a pas de fichiers et donc d'extensions, les ajouts suivants doivent être ajoutés à votre fichier web.config:
Évidemment, ce qui est nécessaire dépend du mode classique par rapport au mode intégré, et le mode classique dépend du bitness. De plus, l'en-tête OPTIONS a été ajouté pour le traitement CORS, mais si vous ne faites pas CORS, vous n'en avez pas besoin.
Pour info, votre web.config est la version locale de l'application (ou du répertoire d'application) dont le niveau supérieur est applicationHost.config.
la source
S'il s'agit d'IIS 8.0, vérifiez si l'activation HTTP est activée. Gestionnaire de serveur -> IIS -> Gérer (voir en haut à droite) -> Ajouter des rôles et des fonctionnalités -> ... -> accéder à la configuration WCF, puis sélectionner Activation HTTP.
la source
Dans notre cas, le problème était lié à la connexion fédérée entre un site .Net et ADFS. Lors de la redirection vers le point de terminaison ADFS le
wctx
paramètre nécessaire tous les trois paramètres pour laWSFederationAuthenticationModule.CreateSignInRequest
méthode:rm
,id
etru
Merci à Guillaume Raymond pour l'astuce pour vérifier les paramètres d'URL!
la source
Outre toutes les solutions ci-dessus, vérifiez si vous avez le "
id
" ou un paramètre personnalisé défini dans laDELETE
méthode correspond à la configuration de la route.Si vous rencontrez des erreurs 405 répétées, réinitialisez la signature de la méthode par défaut comme ci-dessus et essayez.
La configuration d'itinéraire par défaut recherchera
id
dans l'URL. Le nom du paramètreid
est donc important ici à moins que vous ne changiez la configuration de la route sous leApp_Start
dossier.Vous pouvez changer le type de données du
id
cependant.Par exemple, la méthode ci-dessous devrait fonctionner correctement:
Remarque: assurez-vous également de transmettre les données sur l'URL et non sur la méthode de données qui transportera la charge utile en tant que contenu du corps.
Exemple:
J'espère que ça aide.
la source
J'ajouterai pour ceux qui se retrouvent bloqués en essayant de fonctionner
PHP
(Laravel
dans certains cas) ou d'une autreIIS
situation d'hébergement unique avec le405 error
, que vous devez changerverbs
le gestionnaire pour cela pour cette situation spécifique ... donc depuis que j'utilisais,PHP
je suis allé à lePHP
gestionnaire et dans l' onglet,Request Restrictions
puisVerbs
, ajoutez le dontverbs
vous avez besoin. Ce fut tout ce que je besoin d'ajouter auweb.config
pour permettreCORS
àLaravel
.la source
Rien de ce qui précède n'a fonctionné pour moi et j'ai résolu des problèmes en utilisant une page de support ( https://support.microsoft.com/en-us/help/942051/error-message-when-a-user-visits-a-website -qui-est-hébergé-sur-un-serveur) alors j'ai comparé le fichier hôte de l'application avec l'une des copies de travail et il semble qu'il me manquait un tas de gestionnaires et quand j'ai ajouté ceux-ci à l'hôte d'application, il a commencé à fonctionner. Il me manquait tout ça,
la source