我的应用程序是使用 ASP.NET MVC 4 和 Web API 构建的。但我有一个奇怪的问题要分享。
对应代码如下
public class MachinesController : ApiController
{
private GWData db = new GWData();
// GET api/Machines/5
public Machine GetMachine(int id)
{
Machine machine = db.Machines.Single(m => m.Id == id);
if (machine == null)
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
}
return machine;
}
使用以下 URL,我可以检查 Web API 中 Controller 的 API Get 方法。
http://localhost/myweb/api/machines/1
它奏效了,但正在尝试
http://localhost/myweb/api/machines/2
使 Web API 永远挂起,而 w3wp.exe 的内存使用量不断上升。所以我最终不得不终止 w3wp.exe 进程。此外,通过在 GET 方法内部设置断点,我确保在获取正确数据并离开该方法后发生挂起。
我该如何处理此类问题?
最佳答案
我应该早点找到这个原因。这是Json序列化的问题。如果实体有很多相关记录,则需要永远序列化实体的导航属性。当然,忘记禁用延迟加载是我的错。添加以下代码解决了问题。
public MachinesController()
{
db.ContextOptions.LazyLoadingEnabled = false;
}
关于c# - 离开 ApiController 方法后 WEB API 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614683/