0

我使用MySQL数据库创建了WEB API。该表格包含有关仪表序列号的数据,即信号强度值和信号强度的日期时间。现在我通过发送仪表的序列号成功获取数据。在web api中使用日期时间

现在我也向它发送日期时间参数。但它不适合我。以下是我所做的。

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}$" } 
     ); 

我传递的URL像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,但仍然无法解决问题。

我必须失去了一些东西,我不知道

任何帮助将高度赞赏。

回答

0

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

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

欲了解更多信息,请参阅solution