【发布时间】:2015-07-06 17:50:53
【问题描述】:
我有一个控制器列表
[Route("api/cache/list")]
[HttpGet]
public IEnumerable<string> List()
{
...
}
但是如果我尝试访问 localhost:12121/api/cache/list,我会得到 404。我的 webapi 配置如下所示:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
//config.SuppressDefaultHostAuthentication();
//config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Formatters.Remove(config.Formatters.XmlFormatter);
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
}
另一方面,如果我将该控制器更改为
[Route("api/cache/list/{id}")]
[HttpGet]
public IEnumerable<string> List(int id =0)
{
...
}
它会起作用的。我试过在没有 id 作为参数的情况下这样做,仍然没有工作。我在这里做错了什么?
额外信息:
我确实有一个奇怪的设置。我的 WebApiConfig.cs 和 global.cs 在不同的项目中。然后,拥有我的控制器的项目将使用 WebApiConfig.cs 引用该项目
【问题讨论】:
-
不确定是否可以在没有 id 参数的情况下调用该方法
-
可选但不可忽略
-
好吧,如果你看看这个:asp.net/web-api/overview/web-api-routing-and-actions/… 你可以看到他们使用的路线没有 id。
-
我也愿意添加 /{id} 但是当我转到那个 url 时它需要一个 id 或者它返回 404
-
在这种情况下,从你的 get 中删除参数
标签: c# asp.net-mvc asp.net-web-api routing