C#请求的资源不支持http方法补丁

时间:2017-09-05 16:52:52

标签: c# asp.net-web-api routes

我正在使用我的控制器的PATCH方法,但我不断收到错误

  

请求的资源不支持http方法补丁

RouteConfig.cs

// GET http://localhost:28888/v1/panels/
// PATCH http://localhost:28888/v1/panels/1

routes.MapHttpRoute(
    name: "Panel",
    routeTemplate: "v1/panels/{id}",
    defaults: new { controller = "Panel",
        id = RouteParameter.Optional,
    },
    constraints: null,
    handler: handler
);

PanelController.cs

[HttpPatch]
public HttpResponseMessage Patch(int panelId)
{
    if (panelId <= 0)
    {
        throw new ArgumentNullException(nameof(panelId), "Can't be less or equal 0.");
    }

    panelTasks.SetPanelModified(panelId);

    return Request.CreateResponse(HttpStatusCode.NoContent);
}

实际上允许Patch方法。在Global.asax下面是代码行

Context.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE,OPTIONS");
Context.Response.AddHeader("Access-Control-Allow-Credentials", "true");

我正在测试Postman的网址。网址为localhost:28888/v1/panels/2902901

3 个答案:

答案 0 :(得分:1)

@ stephen.vakil

  

如果您希望它自动正确映射您的路线,那么   参数名称需要匹配。它不会自动将files映射到   tidyverse

答案 1 :(得分:0)

您使用的是IIS吗?如果是这样,请尝试删除WebDav映射:

  1. 打开IIS并转到相关网站。
  2. 点击“处理程序映射”
  3. 找到名为“WebDAV”的处理程序
  4. 将其删除

答案 2 :(得分:0)

web api端的

web.config在httpProtocol,

部分配置允许的方法
<add name="Access-Control-Allow-Methods" value="GET,HEAD,PUT,PATCH,POST,DELETE" />

是否存在某些冲突(代码中的设置)或缺少设置?