2014-10-06 18 views
5

Ho un un'azione sul mio Email Web API 2 Controller:Web API 2 metodo DELETE restituisce sempre 500

[Authorize] 
[RoutePrefix("api/Email")] 
public class EmailController : ApiController { 

    //... 

    [HttpDelete] 
    [Route("Remove/{id}")] 
    private void Remove(int id) { 
     _repo.Remove(id); 
    } 
} 

Quando chiamo l'azione da Fiddler con DELETEhttp://localhost:35191/api/Email/Remove/35571 (o con qualsiasi altro metodo) ottengo a 500 indietro con la pagina di errore generica di IIS che non mi dà informazioni sull'errore.

Sembra che l'errore si verifichi prima che la mia azione venga mai chiamata perché l'impostazione di un punto di interruzione all'interno dell'azione determina il mancato raggiungimento del punto di interruzione.

Esiste una sorta di configurazione richiesta per consentire i metodi DELETE in IIS (Express)?

Ho provato consentendo esplicitamente DELETE nel mio web.config:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 

ma senza alcun risultato.

+0

Avete un SyntaxView installato in Fiddler (contiene di solito un po 'più dettagli sull'errore)? – Milen

+1

Mostra il tuo percorso. Hai un attributo '[RoutePrefix (...)]' su 'ApiController'? È 'api/Email'? Inoltre, sia la classe del controller che il metodo di azione devono essere "pubblici", credo. –

+0

SyntaxView mi fornisce solo una versione evidenziata dalla sintassi della pagina HTML fornita da IIS. –

risposta

10

devi fare i tuoi metodi esposti public:

[HttpDelete] 
[Route("Remove/{id}")] 
public void Remove(int id) { 
    _repo.Remove(id); 
} 

Se questo non ha funzionato, allora si probally necessario rimuovere la WebDav (web.config):

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

Non posso credere di averlo perso. Grazie. –

+0

aggiunta rimuovi WebDAV risolto. La rotta non ha avuto alcun effetto. – MIKE

+0

rimuovendo webdav ho capito che ha risolto il problema ma che altro ha rimosso? – MIKE

Problemi correlati