![](/img/trans.png)
[英]How to know which controller method will be called from Web API Authorization filter
[英]How does the api controller know which method to call without the annotation
我最近才剛開始使用asp.net Web API控制器。
我通過ajax調用這些控制器方法,但是默認情況下,當我使用EF創建Web api控制器時,這些控制器方法都沒有上面的屬性,例如:
[HttpGet]
[HttpPost]
[HttpPut]
[HttpDelete]
相反,它們都在它們之上:
[ResponseType(typeof(ModelName))]
但是,控制器方法名稱在方法名稱中確實具有這些注釋,例如:
因此,當我將方法類型放入例如對“刪除”的ajax調用中時..是否通過其中包含單詞“ Delete”的方法名稱進行某種名稱識別? 如果不是,那么api控制器如何知道沒有屬性的調用方法?
是。 從Microsoft文檔 :
為了找到該動作,Web API首先查看HTTP方法,然后尋找其名稱以該HTTP方法名稱開頭的動作。 例如,對於GET請求,Web API查找以“ Get ...”開頭的動作,例如“ GetContact”或“ GetAllContacts”。 此約定僅適用於GET,POST,PUT和DELETE方法。 您可以通過使用控制器上的屬性來啟用其他HTTP方法。
我需要澄清答案,因為基於注釋的方法聲明是可用的! 最常見的錯誤是“為什么[HttpGet]/[ActionName]/[Route]
在ApiController上不起作用”是using System.Web.Http;
的名稱空間using System.Web.Http;
與using System.Web.Mvc;
。 非常棘手!!!
如果您using System.Web.Mvc;
在ApiController中找到using System.Web.Mvc;
,則[HttpGet]/[ActionName]/[Route]
將是MVC版本,不會在WebApiConfig.cs
注冊。
因此,請確保您正在using System.Web.Http;
在ApiController中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.