2015-02-12 3 views
0

Я реализовал конечную точку WebAPI Odata V3. Затем я использовал клиента служб данных WCF в Silverlight для доступа к конечной точке Odata. GET и обновления отлично работают. Однако, когда я пытаюсь отправить удаление, я вижу, используя Fiddler, что клиент отправляет POST и X-HTTP-метод: DELETE вместо DELETE.WebAPI OData Service WCF DataService Client DELETE

Согласно документации, поведение по умолчанию должно быть запросом DELETE, но с переопределением использования .UsePostTunneling = true; на клиенте службы данных для отправки метода расширения. Когда я пытаюсь установить UsePostTunneling = false; аутентификация (Negotiate) не позволяет выполнить GETS.

Использование Fiddler Я могу отправить запрос DELETE, и он выполняется правильно, поэтому кажется, что сервер работает правильно.

Что может заставить клиента отправлять POST вместо DELETE по умолчанию?

+0

Возможный дубликат метода [DELETE .NET WebAPI не работает] (http://stackoverflow.com/questions/12313978/delete-method-net-webapi-does-not-work) – Aron

+0

Это потому, что IIS по умолчанию не позволяет использовать «настраиваемые» HTTP-глаголы, такие как «Удалить». По умолчанию используются только GET и POST. – Aron

+0

Я попробую. Однако метод DELETE работает. Проблема заключается в том, что клиент отправляет запрос как POST, а не DELETE –

ответ

0

Мне не удалось найти способ изменить поведение клиента. Однако я решил проблему. То, что я сделал, переопределило обработчик на стороне сервера, и если запрос был POST с помощью метода x-HTTP: Удалить в заголовке, я изменил его на запрос DELETE. Это подробно описано здесь: http://www.hanselman.com/blog/HTTPPUTOrDELETENotAllowedUseXHTTPMethodOverrideForYourRESTServiceWithASPNETWebAPI.aspx

Смежные вопросы