2
我检查了其他在此提出并回答的问题,但仍无法找到我自己的代码出现问题。ASP.NET Web API错误:找不到与请求URL匹配的HTTP资源
我有一个 '构件' 和 'FALS'(意味着像博客帖子)控制器。每个成员都有自己的'fals'记录,所以我想列出'fals'属于特定成员。
我想自定义操作添加到我的Web API做这个工作,这里是:
[HttpGet, ActionName("fals"), Route("members/{id}/fals")]
public IQueryable<Fal> fals(int id)
{
Member member = db.Members.Find(id);
return member.Fals();
}
所以,这里是WebApiConfig定制:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{id}/{action}"
);
我知道有两个路线,即使我评论或取消注释第二条路线,它也不会改变。
当我尝试调用http://localhost:51601/api/members/1/fals URL,它说:
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:51601/api/members/1/fals'.",
"MessageDetail": "No action was found on the controller 'Members' that matches the name 'fals'."}
ID 1存在,因为我粘贴FALS存在的代码,但不能想通了。
谢谢!
如果从方法中删除“路由”属性会发生什么?例如'[HttpGet,ActionName(“fals”)]' –
刚刚删除它,现在它看起来像工作!我虽然这是必需的,但意识到它不是。谢谢。 –
我想它是覆盖默认路由,所以你可能会发现,如果你把路由放回去,但是不用URL的'/ api /'部分来调用它就可以工作。我不确定你是否也使用属性路由,如果你不是,路由属性如何与传统路由交互,所以这是一个猜测 - 我将它添加为答案。 –