Asp.net web api ASP.NET Web API自定义放置方法不工作(返回404)

Asp.net web api ASP.NET Web API自定义放置方法不工作(返回404),asp.net-web-api,Asp.net Web Api,我正在尝试在我的API中创建一个自定义PUT方法,请遵循中的说明 我的API: public class AlarmStatusController : ApiController { // Other methods here (removed for brevity) [HttpPut] public void ResetAlarmTimeout(long AlarmID) { // Do stuff (removed for brevity

我正在尝试在我的API中创建一个自定义PUT方法,请遵循中的说明

我的API:

public class AlarmStatusController : ApiController
{
    // Other methods here (removed for brevity)

    [HttpPut]
    public void ResetAlarmTimeout(long AlarmID)
    {
        // Do stuff (removed for brevity)
    }
}
我对该方法的调用:

$.ajax({
    type: "PUT",
    url: "/api/AlarmStatus/ResetAlarmTimeout",
    data: { AlarmID: alarmID },
    success: AlarmResetSuccess,
    error: AjaxError
});
公共静态无效寄存器中的我的API路由(HttpConfiguration配置):


ajax调用返回404。如果我将API方法和ajax调用更改为GET,那么它可以工作,但这不是RESTful,因为我的GET方法正在修改对象。

您使用的是VS2010吗?如果是这样的话,您可能正在使用卡西尼,AFAIK不支持卡西尼。iSISPRESS与VS2010很好地合作,支持<代码>放置>代码>代码>删除<代码>谓词等,并且有其他优点,所以我会考虑安装和使用它。

您使用什么作为WebServer IIS、IIS Express、VS开发服务器?这可能是因为您的服务器没有被配置为正确地处理放置请求,如果您使用的是IIS,您需要说明如何配置的帮助版本。我使用的是开发服务器(从Visual Studio进行调试)。这是否解决了您的问题:
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
);