【发布时间】:2017-07-31 19:50:36
【问题描述】:
这个问题本可以回答一百次,但我找不到合适的资源。在 WebApi 项目(VS 提供的默认项目)中,我有如下 ValuesController。
public string Get(int id)
{
return "value";
}
[HttpGet]
public string FindByName(string name)
{
return name;
}
[HttpGet]
public string FindById(int id)
{
return id.ToString();
}
在 WebApiConfig.cs 中,我有以下路由映射。
config.Routes.MapHttpRoute(
name: "actionApiById",
routeTemplate: "api/{controller}/{action}/{Id}",
defaults: new { action = "FindById", Id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "actionApi",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: new { name = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
现在,当我在浏览器中尝试时,只有 FindById() 操作有效。为什么其余的 api 调用返回“未找到与请求匹配的 HTTP 资源”
我怎样才能让这三种方法都起作用?不使用 AttributeRouting。我缺乏 web api 的基本概念吗? (我认为是的)
【问题讨论】:
-
你的意思是你不能调用“Get”方法?如果是这样,请分享您从客户端调用方法的方式?
标签: asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing