我努力使路由前綴工作或可能有誤解有關的ASP.NET Web API路線ASP.NET路由不工作
這裏是我的代碼:
public class TestController : ApiController
{
// GET: api/Test
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/Test/5
public string Get(int id)
{
return "value";
}
[HttpGet]
[Route("GetValue")]
public string GetValue(int id)
{
return "best";
}
[HttpGet]
[Route("GetValue1")]
public string GetValue1(int test)
{
return "GetValue";
}
}
這裏的狀態每個呼叫
localhost:52154/api/test/Getvalue1/1
(HTTP錯誤404.0 - 未找到)localhost:52154/api/test/Getvalue1?test=1
( 的網頁無法找到)localhost:52154/api/test/Getvalue?id=1
(作品迴歸 「價值」,但不會調用getValue方法)localhost:52154/api/test/1
(工程回報 「值」)localhost:52154/api/test/
(工程回報 「值1」, 「值2」)
請讓我知道該怎麼做,使GetValue1和GetValue路線工作。我沒有更新的NuGet pacakge爲ASP.NET對Web API 2.2
WebApiConfig看起來像這樣
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
禮貌你能告訴我們你的WebApiConfig如果所做的更改嗎? – Marusyk
我不認爲在你的路由名稱中使用'Get'將會起作用,因爲它是一個已經被翻譯的特殊術語。嘗試'[路由(「RetriveValue」)]' – user326608
它似乎像你的web api路由沒有正確配置。使用默認路由,所有獲取請求將被映射到Get方法,Posts to Post方法等。很可能您的WebApiConfig.cs有一行包含'routeTemplate:「api/{controller}/{id}'」,您應該更改爲'routeTemplate:「api/{controller}/{action}/{id}」'來映射操作。你的'[Route]'屬性不需要這個。 –