【问题标题】:MVC 5 Jquery Load - Catching Inner ExceptionMVC 5 Jquery 加载 - 捕获内部异常
【发布时间】:2023-04-02 06:51:01
【问题描述】:

我有一个从 SQL 过程加载 ObjectResult 的局部视图。这是使用内置的 EF 方法。

public virtual ObjectResult<Something_Result> getSomething()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Something_Result>("getSomething");
}

所以一个常见的问题是数据库超时,我想展示一下。但我似乎无法在 Ajax.Load() functon 的异常对象中找到它。 在 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

【问题讨论】:

    标签: ajax asp.net-mvc entity-framework exception


    【解决方案1】:

    您可以在调用 getSomething 方法的数据访问层中放置一个 try catch 块,并将适当的响应文本发送到堆栈中。根据您放置 catch 块的位置,您可以检查是否:

    if(ex.Number == -2)
    

    if(ex.InnerException != null && ex.InnerException.Number == -2)
     return Json(new { successful = false, Message = "Timeout" });
    

    并将适当的响应文本作为 Json 响应返回,或者如果只想处理 TimeOutException,您可以将特定的 catch 块放入 'Timeout Exception'

    catch(TimeoutException ex)  
    {  return Json(new { successful = false, Message = "Timeout" }); }
    

    【讨论】:

    • 忘了说 -2 是 TIMEOUT_EXCEPTION 的标识符。
    • 嗯,我知道如何在 C# 中捕获错误,然后在 JSON 对象中返回它。问题是这是返回 PrtialView 的 MVC ActionResult。 return PartialView("_Partial/_View", model);这个模型正在视图中处理,上面有一个模型引用 @model App.ViewModels.SomeRepository 所以不确定将其更改为 JSON 响应有多容易?
    • 你可以很好地从一个返回 ActionResult 的操作方法返回一个 json 响应。因此,如果出现此错误,您将发送 Json 响应,否则您将返回部分视图。在您的 ajax 调用的成功处理程序中,您可以通过检查 if(data.Message != undefined) 之类的内容来识别您收到的对象类型,然后显示错误,否则重新渲染部分视图
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2013-08-30
    • 2012-05-31
    • 2012-12-07
    • 1970-01-01
    相关资源
    最近更新 更多