2014-10-06 3 views
5

У меня есть действие на моем Email Web API 2 контроллера:Web API 2 УДАЛИТЬ метод всегда возвращает 500

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

    //... 

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

Когда я звоню действие от Скрипач с DELETEhttp://localhost:35191/api/Email/Remove/35571 (или любым другим способом), я получаю a 500 назад с общей страницей ошибок IIS, которая не дает мне никакой информации об ошибке.

Похоже, что ошибка возникает до того, как мое действие когда-либо вызвано, потому что установка точки останова в действии приводит к тому, что точка останова никогда не попадает.

Есть ли какая-то конфигурация, необходимая для использования методов DELETE в IIS (Express)?

Я попытался явно позволяя DELETE в моем 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" /> 

, но безрезультатно.

+0

У вас есть SyntaxView установлен в Fiddler (он содержит немного больше информации об ошибке)? – Milen

+1

Покажите свою маршрутизацию. У вас есть атрибут '[RoutePrefix (...)]' на 'ApiController'? Это 'api/Email'? Кроме того, как ваш класс контроллера, так и ваш метод действий должны быть «публичными», я считаю. –

+0

SyntaxView только дает мне синтаксически выделенную версию HTML-страницы, которую мне дает IIS. –

ответ

10

Вы должны сделать ваши открытые методы public:

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

Если это не сработает, то вам прочертовский нужно удалить WebDav (web.config):

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

Не могу поверить, что я пропустил это. Спасибо. –

+0

Добавление удаления WebDAV исправлено. Маршрут не повлиял. – MIKE

+0

, удалив webdav Я понимаю, что исправлена ​​проблема, но что еще она удалила? – MIKE