當我試圖得到一些數據與網頁API的參數(類型DateTime
),我得到響應,出現錯誤404:沒有HTTP資源發現,請求URI匹配 - 網頁API +角
消息 : 「找不到與請求URI相匹配的HTTP資源'http://localhost:53544/api/reservations/GetReservationByDate?date=Tue 2017年1月31日16:00:00 GMT + 0100'。」 MessageDetail : 「不提供控制器名稱找到路由匹配請求的URI 'http://localhost:53544/api/reservations/GetReservationByDate?date=Tue 2017年1月31日16:00:00 GMT + 0100'」
我使用AngularJS這一點。在其他控制器中,我有參數的方法,但都沒有DateTime。這可能是問題嗎?這之前,我有錯誤
400錯誤的請求
和配置路由幫助我。
這是我的代碼 - 在控制器方法:
[HttpGet]
[ActionName("GetReservationByDate")]
[ResponseType(typeof(Reservation))]
public IHttpActionResult GetReservationByDate(DateTime date)
{
var reservation = db.Reservations.Where(d => d.Date.Equals(date));
if (reservation == null)
{
return NotFound();
}
return Ok(reservation);
}
RouteConfig.cs:
config.Routes.MapHttpRoute(
name: "CustomApi",
routeTemplate: "api/Reservations/GetReservationByDate/{date}",
defaults: new { date = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
從AngularJS
和方法:
this.GetReservation = function (date) {
var promise = $http({
method: 'GET',
url: 'api/reservations/GetReservationByDate?date=' + date,
config: {
params: {
"date": date
}
}
})
.then(function (response) {
return response;
},
function (response) {
return response;
});
return promise;
}
我嘗試了不同的組合,與FromUri
,FromBody
,但結果總是相同的。
我改變它像發送這個,但然後顯示錯誤400錯誤的請求: 消息 : 「該請求無效。」 MessageDetail : 「參數字典中的ServiceSchedule.Controllers中的方法'System.Web.Http.IHttpActionResult GetReservationByDate(System.DateTime)'中的非可爲空類型'System.DateTime'的參數'date' .ReservationsController'。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。「 – ryckoshet
對。我知道這意味着什麼。因爲date參數是可選的,所以它意味着可能沒有提供日期(因此爲空),但由於它是DateTime,因此操作中的參數不可空。按照異常消息中的說明「可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。」 – Nkosi
解決方案是什麼?更改參數的類型..? – ryckoshet