在这种情况下,我希望绕过我的正常错误记录,这不会起作用,只需请求错误视图并发送电子邮件。我不希望在所有控制器中复制此特殊情况处理,并且在请求任何操作之前可能会尝试进行数据库访问。我应该在哪里放置这个特殊处理程序,如果不在控制器中,我该如何调用错误视图?
哦,是的,我正在使用Elmah进行未处理异常的例行记录。
答案 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");
}