2016-09-21 162 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(查看= 「」)] –

相關問題