問題是關於使用Route
屬性定義自定義路由。Web API 2路由 - 路由屬性
我知道,在WebApiConfig
類,你總是定義的默認路由,
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
我不能讓工作是當我想通過另一個參數。我知道我能做到這一點(下面的代碼上面所列默認路由,其下定義):
//configuration.Routes.MapHttpRoute(
// name: "GetBrandImagePaths",
// routeTemplate: "api/{controller}/{id}/{type}");
但我寧願,而不是定義在WebApiConfig
文件中的所有這些路由,使用自定義的路由。 但是,如果我沒有上面的文件中註釋掉的代碼,我會得到一個404。那裏讓我相信自定義Route
甚至沒有被查看。
public class HelperApiController : ApiController
{
[HttpGet]
[Route("api/helperapi/{id}/{type}")]
public string GetBrandImages(int id, string type)
{
.....
}
}
我怎麼能有它,所以我可以用在WebApiConfig
文件中定義的路由,並定義單個API控制器內部的自定義路線。
請注意,該項目也是一個MVC項目(不只是WebApi)。有什麼我失蹤,做錯了等?我知道有很多帖子定義瞭如何傳遞多個參數,但我認爲我的問題是關於爲什麼一個工作而不是另一個工作的一個更具體的問題。
所以,如果我再補充一點呼叫,是否弄亂其他默認路由? (行動結果等)?可以肯定地說,使用'config.MapHttpAttrubteRoutes()'僅適用於直線WebApi項目? –
不,它不會覆蓋手動放入的路線。但是,請不要使用任何路由屬性來修飾這些'Controller'類,否則將會出現重複且可能相沖突的路由。我只使用過WebApi項目的路由屬性,因此無法評論它們與MVC的適用性。 – toadflakz
因此,如果我不裝飾任何其他控制器(非Api)w/Route或RoutePrefix,那麼它們仍然會路由到正確的端點? –