ASP.NET網站錯誤處理

關於錯誤處理

try…catch語句,有一定侷限性

  1. 一般適合語句的錯誤處理
  2. 不適合頁面不存在等問題的處理

錯誤處理配置

1. Web.config錯誤處理典型配置

在system.web節點中添加配置

<customErrors defaultRedirect="~/ErrorPage.html" mode="RemoteOnly">
      <error statusCode="404" redirect="~/NonFound.html"/>
    </customErrors>

defaultRedirect:發生錯誤時,瀏覽器重定向到的URL
mode:On表示啓動自定義錯誤,Off表示禁用自定義錯誤,RemoteOnly向遠程客戶端顯示自定義錯誤,並且向本地主機顯示ASP.NET錯誤
statusCode:Http中特定的錯誤狀態碼
redirect:發生該錯誤狀態碼時重定向的頁面

2.使用HandleError處理錯誤

Web.config配置的侷限性

  1. 針對整個網站點的錯誤,配置錯誤顯示頁面,但是這個信息顯示一般比較模糊
  2. 如果針對某種類型的控制器,甚至動作方法,顯示更具體的信息,使用Web.config方式不合適
  3. 使用try catch也不合適(業務代碼和錯誤代碼混編)
    HandleError特性:針對動作方法更方便的錯誤顯示方式
[HttpPost]
        [HandleError( ExceptionType =typeof(System.Exception),View ="Error")]
        public ActionResult GetUserInfor(int Id)
        {
            UserServer server = new UserServer();
            UserInfor user = server.GetUserDetail(Id);
            ViewBag.User = user;
            return View();
        }
ExceptionType:捕獲異常的類型
View:特定的Error視圖
  1. 在控制器中添加特性
  2. Error視圖:創建當前控制器對應的View文件夾中或在Shared文件夾中
  3. 應用次特性後,Web.Config中定義的錯誤處理配置將失效
    在Error視圖中可以實現錯誤的詳細信息
    原因是:在發生錯誤時,HandleError會將異常信息封裝成一個HandleErrorInfor對象,然後傳遞給Error視圖

常見的錯誤狀態碼

404:表示未找到文件

403:表示禁止訪問

500:內部服務器錯誤

[https://www.cnblogs.com/daiyacheng1991/p/11411511.html]:

狀態碼 類別 原因
1xx Informational(信息性狀態碼) 接收的請求正在處理
2xx Success(成功狀態碼) 請求正常處理完畢
3xx Redirection(重定向狀態碼) 需要進行附加操作以完成請求
4xx Client Error(客戶端錯誤狀態碼) 服務器無法處理請求
5xx Server Error(服務器錯誤狀態碼) 服務器處理請求錯誤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章