WebAPI HTTPDelete方法未通过请求找到,但在Swagger

时间:2016-06-29 09:35:31

标签: c# angularjs asp.net-web-api

我有API controller方法:

    [Route("campaigns")]
    [HttpDelete]
    public async Task<IHttpActionResult> Delete(string brandId,string campaignId)
    {
        try
        {
            var merchantId = CurrentUserInfo.GetMerchantId();
            await _service.DeleteAsync(merchantId, brandId, campaignId);
            return StatusCode(HttpStatusCode.NoContent);
        }
        catch (Exception e)
        {
            Log(e);
            return BadRequest(e.Message);
        }
    }

angularJS app我发送请求:

 $http.delete(config.resourceNames.campaign, { params: { brandId: brandId, campaignId: campaignId } })
            .then(function (response) {
                return response;
            }, function (error) {
                return error;
            });

配置文件:

 var resourceNames = {
    campaign: '/api/campaigns'
};

因此路由有效。 但请求始终返回404 NOT FOUND

我通过Swagger进行了检查,DELETE方法在列表中可见,但是当我尝试使用它时。它还会返回NOT FOUND

为什么这样讨价还价?

修改

使用“ISS Express”时出现错误404,但当我切换到“Local ISS”时,错误更改为405方法不允许。

2 个答案:

答案 0 :(得分:0)

可能你需要写:

[Route("api/campaigns")]

答案 1 :(得分:0)

我遇到过这种情况。虽然我不确定其根本原因是什么,但我可以说命名路线有很大帮助。试试这个:

[Route("campaigns", Name = "delete-campaign")]