2015-12-24 78 views
0

我有ASP.NET的WebAPI項目,它具有獲取API - 「預約/可用」的定義如下:奇怪的問題調用get請求Web API

using System; 
using System.Web.Http; 
using AppointmentScheduler; 
using Microsoft.Practices.Unity; 

[RoutePrefix("appointment")] 
public class AppointmentController : ApiController 
{ 
    #region [ Properties ] 
    [Dependency] 
    public IAppointmentScheduler AppointmentScheduler { get; set; } 
    #endregion 

    #region [ Methods - API ] 
    [Route("available")] 
    [HttpGet] 
    public IHttpActionResult GetAvailableAppointments(string agentEmailId, DateTime startDate, DateTime endDate) { 
     try { 
      return base.Ok(this.AppointmentScheduler.GetAppointments(agentEmailId, startDate, endDate)); 
     } catch (Exception exception) { 
      return base.InternalServerError(exception); 
     } 
    } 

    #endregion 
} 

然而,上運行的解決方案,並調用API從小提琴手爲「取」請求我獲得以下錯誤:

HTTP 405 Error - The requested resource does not support http method 'GET'.

在作爲發送相同的請求「POST」我得到的HTTP - 200響應。即使我的方法從未被調用(API方法的斷點從未被擊中)

我查看了關於此問題的上一個查詢here。但沒有一個答案似乎解決了我的問題。有趣的是,除非我瘋了,否則確切的代碼有時候會爲我工作。

我認爲當我試圖打開最初在VS 2015上構建VS 2013的解決方案時,問題就出現了。我感覺,只有在解決方案開始給這兩個IDE提供問題之後。

回答

0

事實證明,我正在調用一個錯誤的URL API - 而不是調用「約會/可用」,我錯誤地調用「API /約會/可用」。 結束了在一個非問題上浪費我的早上。

但是,有一件事我仍然無法理解,爲什麼當API不存在時,它返回「Get」請求的HTTP狀態405,「Post」返回200,而不是「404」。

更新:

得到了問題,出現了在同一個控制器多一個方法。

[HttpPost] 
    public IHttpActionResult BlockAppointment(Appointment appointment) { 
     try { 
      return base.Ok(this.AppointmentScheduler.BlockAppointment(appointment)); 
     } catch (Exception exception) { 
      return base.InternalServerError(exception); 
     } 
    } 

此API調用上述方法是:POST api /約會。所以,我實際上調用了上面的方法,而不是來自Fiddler的縮進方法,從來沒有意識到這一點。