当前位置: 首页 > 知识库问答 >
问题:

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

汤博
2023-03-14

我试图在我的API中创建一个自定义PUT方法,遵循http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api.的说明

我的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配置):

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

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

共有1个答案

舒阳州
2023-03-14

您正在使用VS2010吗?如果是这样的话,您可能正在使用Cassini,AFAIK不支持它的PUT(请参阅相关的Cassini和IISExpress PUT/DELETE动词cause 405 Http代码)。iSISPRESS与VS2010协同工作,支持<代码>放置和<代码>删除< /代码>动词等,并具有其他优点,所以我会考虑安装和使用它。

 类似资料:
  • 本文向大家介绍django rest framework 自定义返回方式,包括了django rest framework 自定义返回方式的使用技巧和注意事项,需要的朋友参考一下 大家在用Django Rest Framework的时候会发现默认继承后,增删改查的返回信息都是一段data,这是因为我实际是状态码和信息你在调用api的时候是看不到的,仅仅如此么?并不是这样,在我前端调用后端的时候,实

  • 我正在尝试使用状态代码201的Ihttpstatus标头获取此JSON响应,并将IHttpActionResult作为我的方法返回类型。 我想要返回的JSON: {“客户 ID”: 324} 我的方法: JSON返回: “ID”:324,“日期”:“2014-06-18T17:35:07.8095813-07:00”, 以下是我尝试过的一些返回,它们要么给了我uri null错误,要么给了我类似于

  • 改变json输出策略 默认使用阿里的fastjson进行json输出 JSON.toJSONString(obj) 如果要更换输出策略,操作方式如下: @Override protected void initApiConfig(ApiConfig apiConfig) { ... // 自定义json格式输出,将null字符串变成"" apiConfig.setJson

  • 网关默认对业务结果进行合并,然后返回统一的格式。 针对alipay.story.find接口,微服务端返回结果如下: { "name": "白雪公主", "id": 1, "gmtCreate": 1554193987378 } 网关合并后,最终结果如下 { "alipay_story_find_response": { "msg": "Succe

  • 问题内容: 我在做 是否可以将结果自动“解析”到“ POJO”列表? 这样我就可以做到这一点: 问题答案: 尝试 就像参考手册所建议的那样。

  • 任务类: 正如您在上面看到的,我有方法,通过gradle运行它可以正常工作: 完整的请访问https://github.com/spring-black/tags/blob/master/build.gradle#L35。