我有一个WebApi项目,其中有一个方法需要开始日期和结束日期,运行报告并返回结果。我试图拿出这条路线,目前看起来像它无法将DateTime值传递给WebApi路由
/api/MarketingEmailStatisticsReports/DateRange/{startDate}/{endDate}
也许有一个更好的路线,但这真的不是问题。
我只是通过打开浏览器并输入URL来测试。如果我将startDate和endDates设置为DateTime字段,我会得到一个404 Not Found。如果我让它们成为字符串,我可以输入方法,但是当我试图将它们从字符串转换为实际的DateTime值时,日期不可分析。
我意识到,如果我在日期中使用“/”字符是一个问题,所以我尝试使用“ - ”字符作为月份 - 日期年值之间的分隔符。
看过一些Microsoft文档后,我看到了如何通过路由约束来检查DateTime值以及正则表达式,以确保以正确的格式输入值。我已经采取了这一建议,现在用的是以下几点:
[HttpGet]
[ResponseType(typeof(MarketingEmailStatisticsReport))]
[Route("/api/MarketingEmailStatisticsReports/DateRange/{startDate:datetime:regex(^\\d{4}-\\d{2}-\\d{2}$)/{endDate:datetime:regex(^\\d{4}-\\d{2}-\\d{2}$)}")]
public IHttpActionResult Get(DateTime startDate, DateTime endDate)
我得到这个异常:
的ArgumentException:解析 “^ \ d {4} - \ d {2} - \ d { 2} $)/ {endDate:datetime:regex(^ \ d {4} - \ d {2} - \ d {2} $“ - 太多了)。
这是我用的网址:
api/MarketingEmailStatisticsReports/DateRange/2017-05-22/2017-05-23
它不看我,我有太多的“)”字符...什么我需要做的就是这工作,还是应该在查询字符串上传递日期?
谢谢!我不敢相信我错过了! – DesertFoxAZ