2016-07-07 100 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來找出兩種解決方案的差異,但只是發現非工作項目具有不同的框架版本。它真的讓我感到困擾,我不能確定原因,但至少它是有效的。

感謝您的答覆,夥計們。