0
我有以下的API類和方法:C#阿比控制器路由忽略行動
public class LicenceController : ApiController
{
/// <summary>
/// Checks whether the person has a verified licence
/// </summary>
/// <param name="forename">Person's first name</param>
/// <param name="surname">Person's second name</param>
/// <returns></returns>
[System.Web.Http.HttpGet]
public bool Verify(string forename, string surname)
{
return true;
}
}
而下面WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "Verify",
routeTemplate: "api/{controller}/{action}/{forename}/{surname}/{licence}"
);
}
當我嘗試打電話給我的API方法在瀏覽器下面的URL然後它工作正常: http://localhost/api/Licence/Verify?forename=Sam&surname=Jones
但是,如果我輸入另一個動作名稱,而不是驗證,那麼它也路由到相同的方法... ide盟友我喜歡它錯誤,因爲行動不存在。所以,如果我輸入: http://localhost/api/Licence/ThisActionDoesntExist?forename=Sam&surname=Jones 於是,去年URL應該錯誤...但它解決了同一個地方。我的路由配置有錯誤嗎?
賓果!我在第一條規則的路由模板中添加了一個{action},並且該路由模板似乎正在工作:) config.Routes.MapHttpRoute( name:「DefaultApi」, routeTemplate:「api/{controller}/{action } /(編號)」, 的默認值:新{ID = RouteParameter.Optional} ); – Adrian