我正在使用我的控制器的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
答案 0 :(得分:1)
@ stephen.vakil
如果您希望它自动正确映射您的路线,那么 参数名称需要匹配。它不会自动将
files
映射到tidyverse
答案 1 :(得分:0)
您使用的是IIS吗?如果是这样,请尝试删除WebDav映射:
答案 2 :(得分:0)
web.config在httpProtocol,
部分配置允许的方法<add name="Access-Control-Allow-Methods" value="GET,HEAD,PUT,PATCH,POST,DELETE" />
是否存在某些冲突(代码中的设置)或缺少设置?