C# Web API响应为null
我开发了一个C# Web API响应为null,c#,rest,asp.net-web-api,response,C#,Rest,Asp.net Web Api,Response,我开发了一个webapi,它接受两个日期时间参数(开始和结束),然后应该给出不同的记录 public HttpResponseMessage GetMeterPing(DateTime start, DateTime end) { try { var startDateTime = start; var endDateTime = end; var result = medEnt
webapi
,它接受两个日期时间参数(开始和结束),然后应该给出不同的记录
public HttpResponseMessage GetMeterPing(DateTime start, DateTime end)
{
try
{
var startDateTime = start;
var endDateTime = end;
var result = medEntitites.tj_xhqd.Where(m => m.sjsj >= startDateTime && m.sjsj <= endDateTime)
.OrderByDescending(o => o.sjsj)
.Select(s => new { s.zdjh, s.sjsj, s.xhqd })
.Distinct()
.FirstOrDefault();
return Request.CreateResponse(HttpStatusCode.OK, new { data = result });
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
公共HttpResponseMessage GetMeterPing(日期时间开始,日期时间结束)
{
尝试
{
var startDateTime=开始;
var endDateTime=end;
var result=medentites.tj_xhqd.Where(m=>m.sjsj>=startDateTime&&m.sjsj o.sjsj)
.Select(s=>new{s.zdjh,s.sjsj,s.xhqd})
.Distinct()
.FirstOrDefault();
return Request.CreateResponse(HttpStatusCode.OK,new{data=result});
}
捕获(例外情况除外)
{
返回请求.CreateErrorResponse(HttpStatusCode.NotFound,ex);
}
}
API URL:http://localhost:14909/api/meters/GetMeterPing/2018-2018年4月28日00:00:00-04-27T23:59:59
当我运行这个webapi
时
{“数据”:null}
在调试时,结果
也是null
非常感谢您提供的任何帮助您对问题的描述听起来好像您正在执行的Linq查询没有返回任何结果,因此您对
FirstOrDefault
的调用是默认的,也就是说它返回null。然后,您不执行其他验证,并将此行的结果设置为具有数据属性的匿名投影的值进行响应。您对问题的描述听起来像是正在执行的Linq查询没有返回任何结果,因此您对FirstOrDefault
的调用是默认的,也就是说它返回null。然后,您不执行额外的验证,并将此行的结果设置为具有数据属性的匿名投影的值进行响应。这里有一个明显的问题,但2018-04-28:00:00:00
之前的2018-04-27T23:59:59
?或者更准确地说,一个日期如何满足这两个条件:=2018-04-28
和…我没有看日期的顺序。这肯定是为什么Linq查询没有返回结果的根本原因。@john,我将回答这个问题。这似乎源于一个相当简单的印刷错误,但它有一个足够清楚的解释,我不认为这是一个坏问题。至少,它可以作为一个例子,说明在构建此类服务时必须小心。由于所提供的日期对服务来说毫无意义,因此如果日期被翻转,代码将受益于抛出BadRequest
。(对于一些API来说,发送完全相同的日期是表示“不在”的方式)@john…没什么大不了的。只是在他想要的情况下,这只是一个印刷错误。翻转日期是api中支持“日期不在范围内”功能的一种方式,因此需要额外的验证来增加其意图的表达能力,而不仅仅是拼写错误。@Alan我明白你的意思。我将收回我的投票。这里有一个明显的问题,但在2018-04-28800:00:00
之前的2018-04-27T23:59:59
是什么宇宙?或者更准确地说,一个日期如何满足这两个条件:=2018-04-28
和…我没有看日期的顺序。这肯定是为什么Linq查询没有返回结果的根本原因。@john,我将回答这个问题。这似乎源于一个相当简单的印刷错误,但它有一个足够清楚的解释,我不认为这是一个坏问题。至少,它可以作为一个例子,说明在构建此类服务时必须小心。由于所提供的日期对服务来说毫无意义,因此如果日期被翻转,代码将受益于抛出BadRequest
。(对于一些API来说,发送完全相同的日期是表示“不在”的方式)@john…没什么大不了的。只是在他想要的情况下,这只是一个印刷错误。翻转日期是api中支持“日期不在范围内”功能的一种方式,因此需要额外的验证来增加其意图的表达能力,而不仅仅是拼写错误。@Alan我明白你的意思。我将撤回我的投票。