[英]Why get error 404 when I try to pass date variable in get request to web api method?
我從事網絡api項目。 當我嘗試將獲取請求中的日期變量傳遞給Web api方法時,出現錯誤404。
這是Web api方法:
[HttpGet]
[Route("ReportDetailed/{clientId}/{date}")]
public IHttpActionResult ReportDetailed(int clientId, DateTime date )
{
return Ok();
}
這里是我如何嘗試訪問上述功能(從URL行):
http://localhost/station/api/Reports/ReportDetailed/12/Wed%20Jun%2001%202016%2000:00:00%20GMT+0300%20(Jerusalem%20Daylight%20Time)
其中clientId為12,date是解析的javascript date對象:
/Wed%20Jun%2001%202016%2000:00:00%20GMT+0300%20(Jerusalem%20Daylight%20Time)
當我從解析的Date對象和Web API函數的date參數上方的URL中刪除時,它可以正常工作(因此,我猜想date對象存在問題)。
知道為什么我嘗試在URI中傳遞對象時會收到錯誤404嗎?
.NET無法識別日期格式。首先將日期轉換為UTC字符串,這將返回日期的字符串表示形式。 因此該值將作為字符串傳遞
var dateString= dateJs.toUTCString();
然后在您的C#代碼中對其進行解析。
public IHttpActionResult ReportDetailed(int clientId, string dateString)
DateTime dateC# = DateTime.Parse(dateString);
您提供的日期格式無效。 嘗試使用更通用的可解析格式,例如YYYY-MM-dd HH:mm:ss
。
您還應該在參數上使用Route約束 ,這將嘗試驗證參數以確保其格式正確
[HttpGet]
[Route("ReportDetailed/{clientId:int}/{date:datetime}")]
public IHttpActionResult ReportDetailed(int clientId, DateTime date )
{
return Ok();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.