在web api中使用日期时间

时间:2017-10-10 06:48:20

标签: mysql rest visual-studio-2015 asp.net-web-api2 datetime-format

我使用WEB API数据库创建了MySQL。该表包括有关仪表序列号的信息,它的信号强度值和信号强度的日期时间。目前我通过发送仪表的序列号成功获取数据。

现在我也向它发送日期时间参数。但这对我不起作用。以下是我所做的。

public HttpResponseMessage GetByMsn(string msn, DateTime dt)
        {
            try
            {
                return Request.CreateResponse(HttpStatusCode.Found, medEntitites.tj_xhqd.Where(m=> m.msn == msn).Where(a=> a.date_time < dt ));
            }
            catch (Exception ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
            }
        }

WebApiConfig文件包含

config.Routes.MapHttpRoute(
       name: "GetByMsn",
       routeTemplate: "api/{controller}/{action}/{msn}/{dt}",
       defaults: null,
       constraints: new { msn = @"^[0-9]+$" , dt = @"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$" }
       );

之后我传递的网址如http://localhost:14909/api/meters/GetByMsn/000029000033/2017-10-06T07:52:27

我得到的错误是A potentially dangerous Request.Path value was detected from the client (:).

为此,我也搜索了解决方案,但找不到正确的解决方案。此外,我已在日期时间中替换了:,但仍然不适合我

更新1

虽然只通过日期2017-10-06,但它对我有用,但是当我随着时间附加它时它不起作用

为了快速检查,我检查了这个question,但我仍然无法解决问题。

我一定错过了一些我不知道的事情

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

经过大量的搜索,我终于找到了解决方案。

我在Web.config中更改了预定义的不允许/无效字符。在下面,添加了以下内容:<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,*,\,?" />.我已从标准无效字符列表中删除了:

有关详细信息,请参阅此solution