我有一个部分视图,它从SQL过程加载ObjectResult。这是使用内置的EF方法。
public virtual ObjectResult<Something_Result> getSomething()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Something_Result>("getSomething");
}
所以通常的问题是来自数据库的超时,我想表明这一点。但我似乎无法在Ajax.Load()函数的异常对象中找到它。
在responseText中,我只获得"{"message":"An error occurred while executing the command definition. See the inner exception for details."}"
并且状态为:500
这也是获取内部异常的简单方法吗? 以下是Ajax.load()函数http://i.imgur.com/ZIrTrMU.jpg抛出的异常 这是EF的内部例外:http://i.imgur.com/LgOhOlB.png
答案 0 :(得分:2)
您可以在数据访问层中放置一个try catch块,您可以在其中调用getSomething方法并在堆栈中发送相应的响应文本。根据您放置catch块的位置,您可以检查是否:
if(ex.Number == -2)
或
if(ex.InnerException != null && ex.InnerException.Number == -2)
return Json(new { successful = false, Message = "Timeout" });
并返回适当的响应文本作为Json响应,或者如果只想处理TimeOutException,则可以将特定的catch块放入&#39; Timeout Exception&#39;
catch(TimeoutException ex)
{ return Json(new { successful = false, Message = "Timeout" }); }