2016-06-29 75 views
2

發現我有API controller與方法:的WebAPI HTTPDelete方法通過請求沒有找到,但在揚鞭

[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); 
     } 
    } 

而且從angularJSapp我發送請求:

$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

這是爲什麼呢?

編輯:

在使用「國際空間站快車」有錯誤404,但是當我切換到「本地國際空間站」的錯誤改變405不允許的方法。

+1

使用fiddler看看實際的請求是什麼樣的,也許你會在那裏發現你的錯誤。 –

回答

0

可能是你需要寫:

[Route("api/campaigns")] 
+0

控制器有「api」前綴。 – Nerf

+0

路由似乎有點問題,因爲它顯示「404 NOT FOUND」錯誤,意味着無法命中目標操作。你確定'config.resourceNames.campaign'反映了正確的路線嗎? – Tasawar

+0

不,路由很好。在Swagger中,該方法是可見的。 – Nerf

0

我遇到了這幾次。雖然我不確定其根本原因是什麼,但我可以說命名路線的幫助非常大。試試這個:

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