2010-12-10 31 views
24

Quelqu'un peut-il faire la lumière là-dessus? J'ai l'impression d'avoir gaspillé toute la journée aujourd'hui à chasser et à chercher sur internet pour trouver des informations sur la façon de le faire. J'ai créé un très simple service WCF RESTful. C'est fondamentalement une preuve de concept. J'ai une base de données simple derrière elle et j'essaye juste de la faire fonctionner de sorte que je puisse voir, créer, mettre à jour et supprimer des articles. En ce moment j'ai seulement la vue et la mise à jour fonctionnant. Je vais attaquer créer plus tard. Pour l'instant je ne peux pas comprendre pourquoi la suppression ne fonctionne pas. Presque tout ce que j'ai trouvé jusqu'ici 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 pour travailler. Chaque fois que j'essaie d'appeler DELETE via mon service, j'obtiens l'erreur suivante:Pourquoi HTTP DELETE verbe retourner erreur 405 - méthode non autorisée pour mon service RESTful WCF fonctionnant sur IIS 7.5?

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

Donc, il semble que quelque part sur mon serveur, il ne permet pas le verbe DELETE. Mais pour la vie de moi, je ne peux pas comprendre. J'ai déjà vérifié les mappages de gestionnaire et le gestionnaire permet tous les verbes pour l'extension .SVC. J'ai désactivé WebDAV. Je ne suis pas vraiment sûr d'où d'autre regarder. J'utilise IIS 7.5 sur Windows Server 2008 R2.

(je peux fournir le code si cela aiderait tout)

Merci, Corey

Répondre

21

Je viens de passer une tonne de temps à essayer de comprendre pourquoi je continué à obtenir 405 Méthode non autorisée lors de l'utilisation du verbe SUPPR. Tout ce que j'ai lu a dit de désinstaller WebDAV d'IIS, mais cela a semblé casser IIS en ce que tous les sites ont donné 503 erreurs. Je l'ai réinstallé, puis j'ai regardé dans IIS pour un réglage.

Il s'avère que WebDAV est le problème, et il a un nœud sur la page des fonctionnalités IIS nommé "WebDAV Authoring". En cliquant sur ce bouton, vous pouvez cliquer sur Paramètres WebDAV ... pour afficher la page des propriétés. Dans la section Demander un comportement de filtrage, définissez Autoriser le filtrage de verbes à Faux a semblé faire l'affaire pour moi (YMMV).

Cela semblait être un résultat populaire lorsque vous cherchez une solution, alors j'ai pensé que je voudrais ajouter à la liste des solutions suggérées.

0

Eh bien, je ne sais pas si cela est vraiment une réponse à ma question, mais il ne résout le problème. J'ai simplement commencé un nouveau projet dans Visual Studio et cette fois j'ai utilisé le modèle de service .NET REST que j'ai trouvé en ligne. Puis j'ai transféré l'ancien code que j'avais de ma tentative précédente et l'ai utilisé dans le nouveau projet. Ça a marché comme sur des roulettes. Les quatre verbes fonctionnent correctement maintenant (GET, PUT, POST et DELETE). Donc ça marche maintenant.

Corey

45

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

Voici une autre méthode que vous pouvez essayer.

dans web.config

<system.webServer> 
    <modules> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <handlers> 
     <remove name="WebDAV" /> 
    </handlers> 
</system.webServer> 
+3

Grâce à l'interface graphique IIS, allez aux modules ** ** et ** Mappages ** pour enlever. Merci maxisam! – mcNux

+0

Cela a fonctionné pour moi même si WebDAV était déjà configuré pour autoriser DELETE et qu'il était également configuré avec Allow Verb Filtering: false. –

+0

C'était tout ce que je devais faire pour obtenir les méthodes PUT et DELETE d'être 405 dans mon service WCF RESTful. Je vous remercie. – kurt

1

Ouvrez votre site web Mappages dans Gestionnaire des services Internet

Modifier chaque gestionnaire que vous souhaitez supprimer avec, en cliquant Restrictions demande, choisir l'onglet Verbs, puis ajoutez SUPPRIMER à la L'une des listes suivantes ou, le cas échéant, dans vos préoccupations, autoriser tous les verbes.

Vous pourriez avoir besoin de redémarrer votre site Web et/ou recompiler votre code