2016-09-21 109 views
1

如果我在我的Web.config中使用customErrors,在调用此页之前,如何使用任何服务器代码?我可以使用customErrors调用服务器端代码吗?

在调用错误之前,我必须在我的catch语句中处理吗? 还有其他的选择吗?

<customErrors mode="On" defaultRedirect="~/Views/Shared/MyPageError.cshtml" /> 

在我的情况下,我想在用户离开网站之前,它击中我的错误页面。

回答

0

我最终添加了一个ajax get方法到视图来调用我的服务器端代码。

0

您可以创建应用程序过滤器,它可以处理你的错误,例如

public class FilterConfig 
    { 
     public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
     { 
      filters.Add(new ErrorHandler()); 
     } 

     public class ErrorHandler : HandleErrorAttribute 
     { 
      public override void OnException(ExceptionContext filterContext) 
      { 
       base.OnException(filterContext); 
       SendEmail(filterContext.Exception.Message); 
      } 
     } 
    } 

注册在Global.asax.cs中

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

提到这个控制器上

[ErrorHandler] 

你可以指定视图以及出现错误的情况

[ErrorHandler(View = "")] 
+0

所以我会在这种情况下关闭customErrors并在所有控制器上实现ErrorHandler过滤器? – PrivateJoker

+0

我试过[ErrorHandler(View =“〜/ Views/Shared/MyPageError.cshtml”)]但是它不会显示这个页面。这只是把一个丑陋的错误信息扔到屏幕上。 – PrivateJoker

+0

@JDS你在Global.asax.cs中注册它,如果是比使用 [的HandleError(查看= “”)] [的ErrorHandler(查看= “”)] –

相关问题