MVC解决方案变得没有响应

时间:2016-07-07 08:17:09

标签: c# ajax asp.net-mvc

我正在使用asp.net MVC构建解决方案,这是我第一次这样做。

问题

解决方案运行一段时间后,控制器无响应。客户端工作正常,当使用ajax调用控制器时,控制器开始执行,但是当它到达第一行时它会停止执行。 ajax调用仍在等待响应,我能够发出新请求(也停止)。它没有抛出任何错误,只是停滞不前。这种情况发生在调试或开始 - 没有调试"时。 实体框架在某些控制器方法中用于数据库调用,如果它与错误有关。

我怀疑必须完成其中一件事,但我完全不确定:

  • 这只是一个问题,因为我使用的是localhost吗?
  • 是否有一些描述最大运行时间的设置?是否有具体的事情
  • 每当调用控制器时我都必须这样做?
  • 数据库是否与拖延有关?

我不确定要附加什么代码,因为这个错误似乎在一段时间后发生,而不是特定于控制器或方法。如果您有什么想看的话,请告诉我。

修改 我添加了一个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);

        ...
    }
}

1 个答案:

答案 0 :(得分:0)

所以我终于开始工作了。这个问题是一个双头巨人,这就是为什么我遇到麻烦的原因。

第一期 Mark Homer说我在使用数据库时使用using。我做了这个,虽然它解决了问题的一个子集,但它并没有完全解决它。但是从这一天起我会记得使用using

第二期 我无法将其追踪到特定的东西,但我创建了一个新项目并将我的文件移入其中(除了自动生成一次)。由于这样做已经无法重现问题。我尝试使用GitHub来查找两个解决方案中的差异,但只是发现非工作项目具有不同的框架版本。它真的让我感到困惑,我无法确定原因,但至少它是有效的。

感谢您的回复,伙计们。