无法将 DateTime 值传递给 WebApi 路由
Trouble passing DateTime values to WebApi route
我有一个 WebApi 项目,其中有一个方法可以获取开始日期和结束日期、运行报告并 returns 结果。我正在尝试为此制定路线,到目前为止它看起来像
/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: parsing
"^\d{4}-\d{2}-\d{2}$)/{endDate:datetime:regex(^\d{4}-\d{2}-\d{2}$" -
Too many )'s.
这是我使用的URL:
api/MarketingEmailStatisticsReports/DateRange/2017-05-22/2017-05-23
在我看来我没有太多“)”字符...我需要做什么才能让它工作,或者我应该在查询字符串上传递日期?
您忘记关闭startDate
参数定义:
.../DateRange/{startDate:datetime:regex(^\d{4}-\d{2}-\d{2}$)}/{endDate:datetime...
^
this curly bracket
我有一个 WebApi 项目,其中有一个方法可以获取开始日期和结束日期、运行报告并 returns 结果。我正在尝试为此制定路线,到目前为止它看起来像
/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: parsing "^\d{4}-\d{2}-\d{2}$)/{endDate:datetime:regex(^\d{4}-\d{2}-\d{2}$" - Too many )'s.
这是我使用的URL:
api/MarketingEmailStatisticsReports/DateRange/2017-05-22/2017-05-23
在我看来我没有太多“)”字符...我需要做什么才能让它工作,或者我应该在查询字符串上传递日期?
您忘记关闭startDate
参数定义:
.../DateRange/{startDate:datetime:regex(^\d{4}-\d{2}-\d{2}$)}/{endDate:datetime...
^
this curly bracket