I am trying to create a custom PUT method in my API, following the instructions at http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api.
My API:
public class AlarmStatusController : ApiController
{
// Other methods here (removed for brevity)
[HttpPut]
public void ResetAlarmTimeout(long AlarmID)
{
// Do stuff (removed for brevity)
}
}
My call to the method:
$.ajax({
type: "PUT",
url: "/api/AlarmStatus/ResetAlarmTimeout",
data: { AlarmID: alarmID },
success: AlarmResetSuccess,
error: AjaxError
});
My API route in public static void Register(HttpConfiguration config):
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
);
The ajax call returns 404. If I change the API method and ajax call to a GET, then it works, but this isn't RESTful since my GET method is modifying the object.