我正在使用asp.net MVC构建解决方案,这是我第一次这样做。
问题
解决方案运行一段时间后,控制器无响应。客户端工作正常,当使用ajax调用控制器时,控制器开始执行,但是当它到达第一行时它会停止执行。 ajax调用仍在等待响应,我能够发出新请求(也停止)。它没有抛出任何错误,只是停滞不前。这种情况发生在调试或开始 - 没有调试"时。 实体框架在某些控制器方法中用于数据库调用,如果它与错误有关。
我怀疑必须完成其中一件事,但我完全不确定:
我不确定要附加什么代码,因为这个错误似乎在一段时间后发生,而不是特定于控制器或方法。如果您有什么想看的话,请告诉我。
修改 我添加了一个ajax调用作为示例,但请注意ajax调用正在运行。它是控制器(不仅仅是RemoveTest-controller),只有在调试一段时间后才会停止。
$.ajax({
type: "POST",
url: "/RemoveTest/RemoveByPlacement",
data: { input: someInput},
dataType: "json",
success: function (data) {
alert(data);
},
error: function () {
alert("Error");
}
});
编辑2 我应该说,这不仅仅是在使用ajax时发生的。打开新页面时也会出现问题,因为这也需要从控制器执行。
更新 这可能是数据库的问题。我插入了var a = 10;到我的控制器,这是执行。但是在尝试执行该行后它会停止。
[HttpPost]
public JsonResult RemoveById(string id)
{
var a = 10;
TestReciving test = db.TestRecevings.FirstOrDefault(x => x.Id == id);
Placement placement = db.Placements.FirstOrDefault(x => x.TestRecivingIdRef == id);
...
}
更新 我做了Mark Homer所说的话。虽然这必须修复,但它并没有解决我的问题。当在IE中运行时,我在更改页面时收到HTML1300(导航发生)消息,但是当它停止并且我尝试打开文件时,我得到" http://localhost:51140/Account/Login无法打开"。在我看来,IIS Express停止响应,即使它一直在运行。
控制器现在看起来像这样:
[HttpPost]
public JsonResult RemoveById(string id)
{
using (var db = new DatabaseContext())
{
TestReciving test = db.TestRecevings.FirstOrDefault(x => x.Id == id);
Placement placement = db.Placements.FirstOrDefault(x => x.TestRecivingIdRef == id);
...
}
}
答案 0 :(得分:0)
所以我终于开始工作了。这个问题是一个双头巨人,这就是为什么我遇到麻烦的原因。
第一期
Mark Homer说我在使用数据库时使用using
。我做了这个,虽然它解决了问题的一个子集,但它并没有完全解决它。但是从这一天起我会记得使用using
。
第二期 我无法将其追踪到特定的东西,但我创建了一个新项目并将我的文件移入其中(除了自动生成一次)。由于这样做已经无法重现问题。我尝试使用GitHub来查找两个解决方案中的差异,但只是发现非工作项目具有不同的框架版本。它真的让我感到困惑,我无法确定原因,但至少它是有效的。
感谢您的回复,伙计们。