当我尝试将get请求中的日期变量传递给web api方法时,为什么会出现错误404?

时间:2016-06-06 09:39:46

标签: c# asp.net-web-api asp.net-web-api2

我在我的web api项目上工作。 当我尝试将get请求中的日期变量传递给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,日期解析为javascript date object:

/Wed%20Jun%2001%202016%2000:00:00%20GMT+0300%20(Jerusalem%20Daylight%20Time)

当我从web api函数中删除解析后的Date对象和日期参数上面的URL时,它的工作完美(所以我猜日期对象的问题)。

当我尝试在URI中传递对象时,我知道为什么会出现错误404?

2 个答案:

答案 0 :(得分:1)

.NET无法识别日期格式 首先将您的日期转换为UTC字符串,这将返回您的日期的字符串表示。所以该值将作为字符串传递

var dateString= dateJs.toUTCString();

然后在你的C#代码中解析它。

public IHttpActionResult ReportDetailed(int clientId, string dateString)
    DateTime dateC# = DateTime.Parse(dateString);

答案 1 :(得分:1)

您提供的日期不是有效的日期格式。尝试更普遍的可解析格式,例如1

您还应该在参数上使用Route constraints,这些参数会尝试验证您的参数,以确保它们的格式正确

dim3