Angularjs 为什么找不到返回404的Web API 2操作?

Angularjs 为什么找不到返回404的Web API 2操作?,angularjs,asp.net-web-api,Angularjs,Asp.net Web Api,这是我的ApicController: [RoutePrefix("api/Campaign")] public class CampaignController : ApiController { private readonly ICampaignLogic _campaignLogic; public CampaignController(ICampaignLogic campaignLogic) { _campaignLogic = campai

这是我的ApicController:

[RoutePrefix("api/Campaign")]
public class CampaignController : ApiController
{
    private readonly ICampaignLogic _campaignLogic;

    public CampaignController(ICampaignLogic campaignLogic)
    {
        _campaignLogic = campaignLogic;
    }

    [HttpGet]
    [Route("GetCampaignsByYearCompanyAndContactIds/{companyId:int}/{contactId:int}/{year:int}")]
    public List<Campaign> GetCampaignsByYearCompanyAndContactIds(int companyId, int contactId, int year)
    {
        return _campaignLogic.GetByYearCompanyAndContactIds(year, companyId, contactId);
    }
}
这就是我在Chrome中调试它时的调用:

http://localhost/MyApi/api/Campaign/GetCampaignsByYearCompanyAndContactIds?companyId=12046&contactId=13662&year=2016
在调用其他API操作时,我的本地主机的所有设置都是正确的,没有任何问题。然而,当我调用这个时,我得到了一个404NotFound错误


这里缺少什么?

根据您的路由,url需要包含路由中的参数,而不是查询字符串的一部分。如果要使它们仅在查询字符串中可用,请将其从路由属性中删除

你应该用AngularJS传递什么

http://localhost/MyApi/api/Campaign/GetCampaignsByYearCompanyAndContactIds/12046/13662/2016
因此,您需要使用参数构建URL,不能将
params
用于此URL

如果要在AngularJS中使用
params
,请将
Route
属性更改为以下内容

[Route("GetCampaignsByYearCompanyAndContactIds")]

就这样,谢谢你。作为将来的参考,如果我想在路由中包含它们,那么在Angular?@halterdev-correct中调用它们时,我是否只需要将它们串联在一起,并且顺序与您在路由中定义它们的顺序相同。
[Route("GetCampaignsByYearCompanyAndContactIds")]