2017-09-05 80 views
0

我的工作我的控制器补丁的方法,但我不断收到错误C#所请求的资源不支持HTTP方法补丁

所请求的资源不支持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); 
} 

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

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

我正在测试邮递员的URL。网址是localhost:28888/v1/panels/2902901

+0

?您使用的是旧版.net还是.net内核? –

+0

传统.net。仍然使用System.Web – pandemic

+1

如果您希望它自动正确映射路由,参数名称需要匹配。它不会自动将'id'映射到'panelId' –

回答

0

@ stephen.vakil

如果你想让它正确地自动映射你的路线,在 参数名称需要匹配。您正在使用哪个的WebAPI的版本,它不会自动映射到id panelId

0

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

  1. 打开IIS并转到相关站点。
  2. 点击 “处理程序映射”
  3. 找到名为 “WebDAV的” 处理程序
  4. 删除在部分httpProtocol基于Web的API侧配置它
0

web.config中允许的方法,

<add name="Access-Control-Allow-Methods" value="GET,HEAD,PUT,PATCH,POST,DELETE" /> 

是否存在一些冲突(使用代码设置)或缺少设置?

相关问题