我有這樣的動作:C#WebApi2行動沒有發現
[ActionName("Find")]
[HttpGet]
public override IHttpActionResult Find(string number)
{
//Get customer by number...
}
這是路線:
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "Get" }
);
這是跟蹤:
System.Web.Http.Request;;;http://localhost:12345/api/Customers/Find?number=100
System.Web.Http.Controllers;DefaultHttpControllerSelector;SelectController;Route='controller:Customer,action:Find'
System.Web.Http.Controllers;DefaultHttpControllerSelector;SelectController;Customer
System.Web.Http.Controllers;HttpControllerDescriptor;CreateController;
System.Web.Http.Controllers;HttpControllerDescriptor;CreateController;CustomerController
System.Web.Http.Controllers;CustomerController;ExecuteAsync;
System.Web.Http.Action;ApiControllerActionSelector;SelectAction;
System.Web.Http.Action;ApiControllerActionSelector;SelectAction;
System.Web.Http.Controllers;CustomerController;ExecuteAsync;
System.Net.Http.Formatting;DefaultContentNegotiator;Negotiate;Type='HttpError',
然而,動作不找到。路線不正確?
什麼是實際錯誤?從跟蹤看起來更像是你在格式化程序中失敗。它看起來像路由工作得很好。 –
只是500錯誤。沒有異常拋出,因爲代碼沒有達到動作。第二行'System.Web.Http.Action; ApiControllerActionSelector; SelectAction;'不包含操作名稱,因此操作未被選中。如果操作被選中,則該行如下所示:'System.Web.Http.Action; ApiControllerActionSelector; SelectAction; SelectedAction Find()' –