这是我的ApiController:
[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);
}
}
这是我在AngularJS中进行调用的地方:
$http.get(ApiUrl + "/api/Campaign/GetCampaignsByYearCompanyAndContactIds",
{ params: { year: $scope.year, companyId: $scope.client, contactId: $scope.contactId } })
.then(function (responses) {
})
这是我在Chrome中调试时调用的内容:
http://localhost/MyApi/api/Campaign/GetCampaignsByYearCompanyAndContactIds?companyId=12046&contactId=13662&year=2016
所有内容都根据我的localhost设置正确,因为我正在调用其他API操作而没有任何问题。但是,当我调用这个时,我收到404 Not Found错误。
我在这里缺少什么?
答案 0 :(得分:2)
根据您的路线,网址需要包含路线中的参数,而不是查询字符串的一部分。如果要仅在查询字符串中使它们可用,则从路由属性中删除它们。
你应该在AngularJS中传递什么
http://localhost/MyApi/api/Campaign/GetCampaignsByYearCompanyAndContactIds/12046/13662/2016
因此,您需要使用参数构建网址,不能将params
与此网址一起使用。
如果您想在AngularJS中使用params
,请将Route
属性更改为以下内容。
[Route("GetCampaignsByYearCompanyAndContactIds")]