2010-12-10 11 views
24

Qualcuno può far luce su questo? Mi sento come se avessi sprecato l'intera giornata oggi a cacciare e cercare su Internet qualsiasi informazione su come fare questo. Ho creato un servizio RESTful WCF molto semplice. È fondamentalmente una prova di concetto. Ho un database semplice dietro e sto solo cercando di farlo funzionare in modo che io possa visualizzare, creare, aggiornare ed eliminare elementi. In questo momento ho solo vista e aggiornamento funzionante. Mi occuperò di creare più tardi. Per ora non riesco a capire perché l'eliminazione non funziona. Quasi tutto ciò che ho trovato finora mi dice che devo disabilitare il modulo WebDAV. L'ho fatto e poi ho messo PUT al lavoro. Ma non riesco a far funzionare DELETE. Ogni volta che provo a chiamare DELETE tramite il mio servizio, viene visualizzato il seguente errore:Perché il comando HTTP DELETE restituisce un errore 405: metodo non consentito per il servizio WCF RESTful in esecuzione su IIS 7.5?

Il server remoto ha restituito una risposta imprevista: (405) Metodo non consentito.

Quindi sembra che da qualche parte sul mio server non sia consentito il verbo DELETE. Ma per la vita di me non riesco a capirlo. Ho già controllato i mapping degli handler e il gestore consente tutti i verbi per l'estensione .SVC. Ho disabilitato WebDAV. Non sono sicuro su dove altro guardare. Sto usando IIS 7.5 su Windows Server 2008 R2.

(posso fornire il codice se sarebbe d'aiuto a tutti)

Grazie, Corey

risposta

21

ho appena trascorso un sacco di tempo a cercare di capire il motivo per cui ho continuato a ottenere 405 Metodo non ammessi quando si usa il verbo DELETE. Tutto ciò che ho letto diceva di disinstallare WebDAV da IIS, ma questo sembrava infrangere IIS in quanto tutti i siti davano 503 errori. L'ho reinstallato, quindi sono andato a cercare in IIS alcune impostazioni.

Si scopre che WebDAV è il problema e ha un nodo nella pagina delle caratteristiche di IIS denominata "WebDAV Authoring". Se fai clic su di esso, fai clic su Impostazioni WebDAV ... per ottenere la pagina delle proprietà. Nella sezione Richiedi comportamento filtro, impostare Consenti filtraggio dei verbi a False sembrava fare il trucco per me (YMMV).

Questo sembrava essere un risultato popolare quando si cercava su Google per una soluzione, quindi ho pensato di aggiungere all'elenco delle soluzioni suggerite.

0

Beh, io non sono sicuro se questo è davvero una risposta alla mia domanda, ma ha risolto il problema. Ho semplicemente iniziato un nuovo progetto in Visual Studio e questa volta ho utilizzato il modello di servizio .NET REST che ho trovato online. Poi ho trasferito il vecchio codice che avevo dal mio precedente tentativo e l'ho usato nel nuovo progetto. Ha funzionato come un fascino. Tutti e quattro i verbi funzionano correttamente ora (GET, PUT, POST e DELETE). Quindi sta funzionando ora.

Corey

45

Nel caso in cui qualcuno abbia lo stesso problema.

Ecco un altro modo per provare.

in web.config

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

Attraverso l'interfaccia grafica di IIS, andare a moduli ** ** e ** ** Mapping gestori da rimuovere. Grazie maxisam! – mcNux

+0

Questo ha funzionato per me anche se WebDAV era già configurato per consentire DELETE ed è stato anche configurato con Consenti filtraggio dei verbi: falso. –

+0

Questo era tutto ciò che dovevo fare per ottenere i metodi PUT e DELETE dall'essere 405'ed nel mio servizio RESTful WCF. Grazie. – kurt

1

Aperto di Mapping gestori in IIS tuo sito web manager

Modifica ogni gestore che si desidera cancellare con, cliccando Restrizioni richieste, scegliendo la scheda Verbi, quindi aggiungere DELETE per la Elenco "Uno dei seguenti" o, se appropriato nei tuoi dubbi, consentire tutti i verbi.

Potrebbe essere necessario riavviare il sito e/o ricompilare il codice

Problemi correlati