异常处理使用浏览器而不是异常助手

时间:2013-10-02 09:27:14

标签: c# asp.net-mvc

我正在使用MVC4。 当我导致异常时,信息显示在浏览器中。 如何在异常助手中获取异常信息呢? 感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

您可以在Global.asax中使用异常处理:

 protected void Application_OnError( )
    {
        var exception = Server.GetLastError( );
         //handle exception here
    }

您还可以使用例外过滤器:

有一个方法'RegisterGlobalFilters()'有'filters.Add(new HandleErrorAttribute())'过滤器,处理MVC应用程序中的所有错误。方法'RegisterGlobalFilters()'由'Application_Start()'方法调用。

public static void RegisterGlobalFilters(GlobalFiltersCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}

错误视图

默认情况下创建的错误视图包含以下HTML:

 Collapse | Copy Code
@{
   Layout = null;
}

<!DOCTYPE html>
<html>
<head>
   <meta name="viewport" content="width=device-width" />
   <title>Error</title>
</head>
<body>
   <h2>
       Sorry, an error occurred while processing your request.
   </h2>
</body>
</html>

在错误视图中访问异常详细信息:

public class HandleErrorInfo
{   
    public HandleErrorInfo(Exception exception, string controllerName, 
        string actionName);

    public string ActionName { get; }

    public string ControllerName { get; }

    public Exception Exception { get; }
}

查看此链接以获取更多信息:

Exception Handling in ASP.NET MVC

PD:

在web.Config中设置:

<CustomErrors mode="Off"> 

停止在浏览器中观看异常

答案 1 :(得分:0)

使用多种方法创建错误控制器(每种方法都是错误):

public Class Error : Controller 
{
   public ActionResult ErrorMethodName()
   {
      return View();
   }
}

在每个ErrorName.cshtml中,写下有关错误的信息。

现在,对于其他控制器中的每个方法,请执行以下操作:

   public ActionResult MethodeName()
   {
      try
      {
         // your code
      }
      catch (exception)
      {
         return.RedirectToAction('ErrorMethodName','Error');
      }
   }