2012-08-25 60 views
3

我想在我的API中创建一个自定义PUT方法,按照http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api的说明操作。ASP.NET Web API自定义PUT方法不起作用(返回404)

我的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 
}); 

在公共静态无效寄存器(HttpConfiguration配置)我的API路线:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional } 
); 

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

+0

什么是作为一个Web服务器使用IIS,IIS Express,VS开发服务器? – nemesv

+0

这可能是因为您的服务器没有配置为正确处理PUT请求,如果您使用的是IIS,则需要说明如何配置的版本。 – joocer

+0

我正在使用dev服务器(从Visual Studio进行调试)。 – datadamnation

回答