我使用ASP .NET Web Api創建了一個restful api,我在設置路由時遇到了問題。路由不能按預期工作
問題1:我正在嘗試設置自定義刪除路線。如果我在我的控制器「DeleteTargetFromApplication」上命名我的操作,它可以很好地工作,但如果我將操作命名爲「RemoveTargetFromApplication」,它會給我一個「請求的資源不支持http方法'DELETE'」錯誤。除了名字,我什麼都不改變。我使用的路線是這樣設置的:
config.Routes.MapHttpRoute(
name: "PesticideRemoveTargetFromApplication",
routeTemplate: "Pesticide/Applications/{id}/Targets/{targetId}",
defaults: new { controller = "Applications", action = "DeleteTargetFromApplication" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Delete) }
)
有沒有我沒有得到關於Web Api如何匹配路線?
問題2:我有Get,Post,Put,Delete,Patch的所有默認路由。在默認值上面,我在上面創建了默認設置的任何特殊路由。出於某種原因,當我添加:
config.Routes.MapHttpRoute(
name: "PesticideGetTargetsForApplication",
routeTemplate: "Pesticide/Applications/{id}/Targets",
defaults: new { controller = "Applications", action = "GetTargetsForApplication" },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
默認值以上,這是說我有匹配的「GetTargetsForApplication」行動和默認的「獲取」行動我把所有控制器上兩個動作。爲什麼看到這兩種行爲,即使我具體告訴它要使用哪個動作。路線模板明顯不同於「Applications /:id/Targets」和「Applications」。爲什麼這些混合起來?
我已編輯您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –