【发布时间】:2018-06-21 09:23:13
【问题描述】:
我知道有很多关于这个问题的问题。但我无法解决我的问题。
API 流程
- 它接受两个参数仪表序列号和日期时间。
- 参数传递后进行 API 调用
- API 将在两个数据库中搜索发送的仪表序列号。
- 获取记录后,它应该给出输出。
代码
下面是我的代码
public HttpResponseMessage GetDetails(string msn, DateTime dt)
{
try
{
var prodDetails = mdcEntitites.tj_xhqd.Where(m => m.sjsj >= dt)
.Select(x => new { MSN = x.zdjh, PingDateTime = x.sjsj, PingValue = x.xhqd })
.ToList();
var mainDetails = kesc.tj_xhqd.Where(m => m.sjsj >= dt)
.Select(x => new { MSN = x.zdjh,PingDateTime= x.sjsj,PingValue = x.xhqd })
.ToList();
var res = prodDetails.Concat(mainDetails).ToList();
return Request.CreateResponse(HttpStatusCode.OK, new {details = res });
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
在上述通话中,我接受了日期时间。当仪表发送给现场工作人员时,系统中会标记日期时间,因此上述日期就是该日期时间。
它将在此日期时间之后搜索该序列号的所有记录。
错误
当我尝试使用当前日期时间运行 API 时,使用 Postman 会得到以下结果
{
"details": [
{
"MSN": "002998002523",
"PingDateTime": "2018-06-21T08:38:12",
"PingValue": "26"
},
{
"MSN": "002998001286",
"PingDateTime": "2018-06-21T08:38:13",
"PingValue": "18"
},
.
.
.
.
.
]
}
但是当我尝试运行日期时间小于当前日期时间的 API 时,它会出现以下异常
引发了“System.OutOfMemoryException”类型的异常。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.OutOfMemoryException:引发了“System.OutOfMemoryException”类型的异常。
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[OutOfMemoryException:引发了“System.OutOfMemoryException”类型的异常。] System.IO.MemoryStream.set_Capacity(Int32 值) +89 System.IO.MemoryStream.EnsureCapacity(Int32 值)+90 System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) +326 Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter.Write(Byte[] buffer, Int32 offset, Int32 count) +62 System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest WR) +9746340 System.Web.HttpResponse.FilterOutput() +104 System.Web.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +58 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +71
我怎样才能摆脱这个问题?
任何帮助将不胜感激。
【问题讨论】:
-
你试过这个解决方案了吗? stackoverflow.com/a/25285298/698589
-
@dlxeon 尝试过,但它使客户端崩溃
标签: c# .net exception asp.net-web-api