web-dev-qa-db-fra.com

Pourquoi HTTP DELETE renvoie-t-il une erreur 405 - méthode non autorisée pour mon service RESTful WCF exécuté sur IIS 7,5?

Quelqu'un peut-il nous éclairer à ce sujet? J'ai l'impression d'avoir passé toute la journée à chercher et à rechercher sur Internet des informations sur la procédure à suivre. J'ai créé un service WCF RESTful très simple. C'est fondamentalement une preuve de concept. J'ai une base de données simple derrière et j'essaie simplement de la faire fonctionner afin de pouvoir afficher, créer, mettre à jour et supprimer des éléments. En ce moment, je n'ai que la vue et la mise à jour qui fonctionnent Je m'attaquerai à créer plus tard. Pour l'instant, je ne comprends pas pourquoi la suppression ne fonctionne pas. Presque tout ce que j'ai trouvé jusqu'à présent me dit que je dois désactiver le module WebDAV. Je l'ai fait et puis j'ai mis PUT au travail. Mais je ne peux pas obtenir DELETE au travail. Lorsque j'essaie d'appeler DELETE via mon service, l'erreur suivante apparaît:

Le serveur distant a renvoyé une réponse inattendue: (405) Méthode non autorisée.

Il semble donc que quelque part sur mon serveur, il n'autorise pas le verbe DELETE. Mais pour la vie de moi je ne peux pas le comprendre. J'ai déjà vérifié les mappages de gestionnaire et le gestionnaire autorise tous les verbes pour l'extension .SVC. J'ai désactivé WebDAV. Je ne sais pas trop où chercher. J'utilise IIS 7.5 sur Windows Server 2008 R2.

(Je peux fournir du code si cela peut aider du tout)

Merci Corey

25
Corey Burnett

Je viens de passer une tonne de temps à essayer de comprendre pourquoi je continuais à utiliser la méthode 405 en utilisant le verbe DELETE. Tout ce que j'ai lu disait de désinstaller WebDAV d'IIS, mais cela semblait casser IIS en ce que tous les sites donnaient 503 erreurs. Je l'ai réinstallé, puis j'ai cherché un paramètre dans IIS.

Il s’avère que le problème est WebDAV et qu’un nœud figure sur la page de fonctionnalités IIS nommée " WebDAV Authoring ". Cliquez sur pour vous permettre de cliquer sur Paramètres WebDAV ... pour afficher la page de propriétés. Dans la section Demander le comportement du filtrage, définissez Autoriser le filtrage des verbes à Faux semblait faire l'affaire pour moi (YMMV).

Cela semblait être un résultat populaire quand on cherchait une solution sur Google, alors j'ai pensé ajouter quelque chose à la liste des solutions suggérées.

23
HeliNinja

Dans le cas où quelqu'un aurait le même problème.

Voici une autre façon d'essayer.

dans web.config

<system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" /> 
    </handlers>
</system.webServer>
53
maxisam

Ouvrez les mappages de gestionnaires de votre site Web dans IIS Manager. 

Modifiez chaque gestionnaire avec lequel vous voulez SUPPRIMER en cliquant sur Demander des restrictions, en sélectionnant l'onglet Verbes, puis ajoutez SUPPRIMER à la liste "Un des éléments suivants" ou, le cas échéant, autorisez tous les verbes.

Vous devrez peut-être redémarrer votre site Web et/ou recompiler votre code 

1
sirhcsivad

Bien, je ne suis pas sûr que ce soit vraiment une réponse à ma question mais cela a résolu le problème. J'ai simplement lancé un nouveau projet dans Visual Studio et cette fois-ci, j'ai utilisé le modèle de service .NET REST que j'ai trouvé en ligne. Ensuite, j'ai transféré l'ancien code de ma précédente tentative et je l'ai utilisé dans le nouveau projet. Ça a marché comme sur des roulettes. Les quatre verbes fonctionnent maintenant correctement (GET, PUT, POST et DELETE). Donc ça marche maintenant.

Corey

0
Corey Burnett