簡體   English   中英

當我嘗試將獲取請求中的日期變量傳遞給Web api方法時,為什么會出現錯誤404?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM