Dot-Net

HttpMethod 中缺少 Web API 路由約束更新檔

  • May 12, 2014

我正在使用 .net Web API V1 建構一些寧靜的 api。

我們正在嘗試為 web api 定義一些路由。我在定義“Put”和“patch”的路線時遇到了一些問題。

它們具有相同的 URL,唯一不同的是在 HttpMethod 中。在HttpMethod中,不​​支持Patch <http://msdn.microsoft.com/en-us/library/system.net.http.httpmethod(v=vs.118).aspx>

config.Routes.MapHttpRoute(
   "UpdateCustomer",
   "api/customers/id/{id}",
   new {controller = "Customers", action = "UpdateCustomer"},
   new {id = @"\d+", httpMethod = new HttpMethodConstraint(HttpMethod.Put)}
);

config.Routes.MapHttpRoute(
   "PatchCustomer",
   "api/customers/id/{id}",
    new {controller = "Customers", action = "PatchCustomer"},
    new {id = @"\d+", httpMethod = new HttpMethodConstraint(HttpMethod.**Patch**)}
);

編輯:更新到目前最新版本的 WebAPI 5.2.7 ( <https://www.nuget.org/packages/Microsoft.AspNet.WebApi/> )

原版的:

如果您不能改用:

new HttpMethod("PATCH")

請參閱以下 Web API 原始碼中的使用範例

<https://github.com/aspnetwebstack/aspnetwebstack/blob/master/src/System.Web.Http/HttpPatchAttribute.cs>

引用自:https://stackoverflow.com/questions/23599817