У меня есть код, который выглядит так:
[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 с) Исключение, безусловно, происходит, я вижу это в своих журналах, и событие protected override void OnException
запускается. Но улов для TimeoutException
или Exception
никогда не будет достигнут. Я подозреваю, что в работе MVC есть что-то, чего я не понимаю.
Особенность в том, что если я поставлю точку останова на return this.Json(custResults);
, я могу без проблем пройти эту линию. Но если я добавлю ToList()
на .Select(..)
, то будет выдано исключение TimeoutException. Как MVC может перечислить набор результатов после выполнения оператора return?