我有代碼看起來像這樣:MVC枚舉結果*後*某種形式的返回語句?
[HttpPost]
public ActionResult CustomerSearch(string firstName ...
{
...
try
{
var results = from t in db.Customers...
var custResults = results.Select(c=> new string[] { ... });
return this.Json(custResults);
}
catch (TimeoutException exc1)
{
return this.Json(new {error = "Search failed (timeout)"});
}
catch (System.Exception exc)
{ ... }
}
我通過設置在SQL調用的東西不多(5秒)的超時對此進行測試。例外情況肯定發生,我可以在我的日誌中看到它,並且事件正在發射。但是TimeoutException
或Exception
的捕獲從未受到影響。我懷疑MVC是如何工作的,而我並不理解。
特別的是,如果我在return this.Json(custResults);
上放置了一個斷點,我可以毫無問題地傳遞該行。但是,如果我在.Select(..)
上放置ToList()
,則會拋出TimeoutException。在執行return語句之後,MVC如何枚舉結果集?
哪裏嘗試捕捉與相關聯? – Bueller
我認爲你的漁獲投擲錯誤,你可以嘗試添加斷點來驗證這一點。 – Jethro
爲了簡潔,假設TRY已被忽略,我認爲這可能是一個deyled執行問題。 linq語句在使用之前不會實際運行。要測試catch只需把Throw new Exection(「test」);在方法的頂部,看看它是否被捕獲。 – HitLikeAHammer