2016-07-07 113 views
0

我正在构建一个使用asp.net MVC的解决方案,这是我第一次这样做。MVC解决方案变得无响应

问题

解决方案后已运行了一段时间的控制器变得反应迟钝。客户端工作正常,当使用ajax调用控制器时,控制器开始执行,但是只要它遇到第一行就会停止执行。 ajax调用仍在等待响应,并且我能够发出新的请求(也停止)。它不会抛出任何错误,它只是失速。无论是在调试还是“无需开始调试”时都会发生这种情况。 实体框架用于数据库调用的某些控制器方法中,如果它与错误有关。

我怀疑这些事情必须做,但我不能肯定在所有:

  • 这是唯一的一个问题,因为我使用本地主机?
  • 是否有一些描述最大运行时间的设置?有没有一个特定的东西
  • 我必须做任何时候控制器被调用?
  • 数据库与拖延有关吗?

我不知道附什么样的代码,因为这个错误似乎一段时间后发生的,而不是具体到一个控制器或方法。让我知道是否有你想看到的东西。

编辑 我以添加一个ajax调用为例,但请注意ajax调用正在工作。它是控制器(不仅RemoveTest控制器)停滞并且仅在调试一段时间后。

$.ajax({ 
    type: "POST", 
    url: "/RemoveTest/RemoveByPlacement", 
    data: { input: someInput}, 
    dataType: "json", 
    success: function (data) { 
     alert(data); 
    }, 
    error: function() { 
     alert("Error"); 
    } 
}); 

编辑2 也许我应该说,使用Ajax时它不只是发生。打开新页面时也会出现问题,因为这也需要从控制器执行。

UPDATE 这可能是数据库的问题。我已经插入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); 

     ... 

    } 

UPDATE 我做了什么,马克·荷马说。尽管这必须得到解决,但并没有解决我的问题。在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

看到您的代码可以帮助 - 也许Ajax调用是最好的。你知道,它在哪里停止执行 –

+0

我用例子编辑过。 – user3265569

+0

谢谢,你还可以发布控制器方法吗?什么是输入应该是什么?字符串等 –

回答

0

所以我终于得到它的工作。这个问题是一个双头巨头,这就是为什么我有麻烦钉住它。

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

第二期 我无法追查到具体的事情,但我创建了一个新项目,并动了我的文件到它(除了自动生成一次)。由于这样做一直没有能够重现问题。我尝试使用GitHub来找出两种解决方案的差异,但只是发现非工作项目具有不同的框架版本。它真的让我感到困扰,我不能确定原因,但至少它是有效的。

感谢您的答复,伙计们。