我有一個控制器,它看起來像這樣的WebAPI幫助頁面顯示出比控制器名稱
[HttpGet]
[ActionName("Ping")]
public bool Ping() { return true; }
[HttpPost]
[ActionName("Test")]
public string Test([FromBody] Testing form)
{
return form.Email + " " + form.Password;
}
和運行幫助頁面時,不同的名稱表明這一點:
獲取API /測試
POST API /測試
路由是模板中默認的路由,所以不知道爲什麼它沒有選擇正確的名稱即使在註釋「ActionName」之後。
任何幫助將得到真正的讚賞。
============================================== ===================
答案:正如David L.所建議的那樣,問題在於路由。我讀了他的建議的鏈接,並補充說保存在它的「行動」新的路由API和它看起來像這樣:
config.Routes.MapHttpRoute(
name: "TestApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
有了這一點,使用正確標註名稱NOW的顯示正確的API。
我使用默認路由(意思是我沒有更改模板附帶的路由)。這是不工作的原因嗎?如果是這樣,你知道新的路由應該是什麼嗎?附:我正在閱讀您的鏈接 - 非常感謝 –
爲了澄清,WebAPI使用RESTful路由,這意味着它通過其REST屬性標識您的方法名稱。您應該重新命名Ping以獲取並測試以發佈。這與路由一致,因爲它映射到REST關鍵字。 –
實際上,通過添加一個具有{action}作爲其一部分的新Route,它現在確實顯示了正確的「ActionName」名稱。它實際上顯示雙倍,但我想我只需要進一步閱讀: - )再次感謝。 –