处理MVC应用程序中不可用数据库的方案

时间:2010-08-05 21:24:37

标签: asp.net asp.net-mvc

在这种情况下,我希望绕过我的正常错误记录,这不会起作用,只需请求错误视图并发送电子邮件。我不希望在所有控制器中复制此特殊情况处理,并且在请求任何操作之前可能会尝试进行数据库访问。我应该在哪里放置这个特殊处理程序,如果不在控制器中,我该如何调用错误视图?

哦,是的,我正在使用Elmah进行未处理异常的例行记录。

2 个答案:

答案 0 :(得分:1)

尝试在控制器中使用这些行中的内容

[HandleError(ExceptionType = typeof(SqlException), View = "SqlError")]
Public Class ProductController: Controller {
    public ViewResult Item(string itemID)
    {
            Item item = ItemRepository.GetItem(itemID);
            return View(item);
    }
}

现在在Views/Shared/文件夹中,您可以创建名为“SqlError.aspx”的视图,如果存在SQL异常,将返回该视图。

我还建议在Global.asax文件中处理所有应用程序错误“stuff”。 IE:发送错误电子邮件,记录错误等的部分

查看这个SO问题的想法 ASP.NET MVC Custom Error Handling Application_Error Global.asax?

答案 1 :(得分:0)

我不知道您的代码是什么,但假设日志记录是在某些全局错误处理事情中完成的,那么编辑错误处理就像这样应该这样做:

try
{
  //logging
}
catch(SqlException)
{
  //send email
  return View("Error");
}