2017-09-05 129 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" /> 

是否存在一些衝突(使用代碼設置)或缺少設置?

相關問題