Using POST for .NET ApiController action with name starting with "Delete" -
i'd have apicontroller controller action accepts post requests , has name starts delete. i'm using following jquery:
function deletemydomainobjectbutton_onclick() { var $div = $(this).closest("div.domain-object"); var url = baseurl + "api/mybusiness/deletemydomainobject"; var dto = { "mydomainobjectid": $div.find("input[name=mydomainobjectid]").val() }; $.ajax({ complete: deletemydomainobjectajax_oncomplete , datatype: "json" , contenttype: "application/json" , accept: "applcation/json" , data: json.stringify(dto) , error: deletemydomainobjectajax_onerror , method: "post" , success: deletemydomainobjectajax_onsuccess , url: url }); } i keep getting 405: {"message":"the requested resource not support http method 'post'."}. response headers are:
http/1.1 405 method not allowed cache-control: no-cache pragma: no-cache allow: delete content-type: application/json; charset=utf-8 expires: -1 server: microsoft-iis/7.5 x-aspnet-version: 4.0.30319 x-powered-by: asp.net date: tue, 07 jul 2015 20:45:35 gmt content-length: 73 i did check request headers, , sending post. here's controller:
public class baseapicontroller : apicontroller { /* properties api controllers set di */ } public class mybusinesscontroller : baseapicontroller { public virtual mydomainobject foobar(deletemydomainobjectdto dto) { return this.deletemydomainobject(p_input); } [httppost] // doesn't work. // [acceptverbs(httpverbs.post)] // doesn't work. public virtual mydomainobject deletemydomainobject(deletemydomainobjectdto dto) { return businesslogic.deletemydomainobject(dto) } } now, if change controller action reference jquery foobar, works.
question: how can turn off magic sauce makes apicontroller allow delete requests controller actions names starting string delete? or doing else wrong?
Comments
Post a Comment