我努力使路由前缀工作或可能有误解有关的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]'属性不需要这个。 –