我在PersonController类中有以下函数
[HttpGet]
[ActionName("GetBloggersNotFollowed")]
public IQueryable<object> GetBloggersNotFollowed(int companyId)
{
return Uow.People.GetPeople().Select(p => new { p.Email, p.FirstName, p.LastName, p.PhoneNumber, p.Type, p.UserName, p.Country, p.Id });
}
它用于检索人员列表。
我将此功能称为
$.ajax({
url: "/api/person/GetBloggersNotFollowed/1"
}).success(function (people) {
PersonModule.GetPeople(people);
});
我在WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
当我尝试在浏览器中调用路径时出现错误
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:1045/api/person/GetBloggersNotFollowed/1'.
</Message>
<MessageDetail>
No action was found on the controller 'Person' that matches the request.
</MessageDetail>
</Error>
我不知道我错了。有谁能看到这个问题?
答案 0 :(得分:1)
参数的名称对路线匹配很重要。
您已在路线中命名参数id
但该方法将其命名为companyId
。
将路线中的{id}
更改为{companyId}
或将companyId
参数更改为id
。
答案 1 :(得分:1)
将您的路线替换为此路线:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{companyId}",
defaults: new { id = RouteParameter.Optional }
);
这个答案补充了马克琼斯的答案。