ASP.NET 錯誤處理模組

來源:互聯網
上載者:User

異常可以通過try catch捕捉到,但是難免有幾個忘記catch的,這樣會導致頁面出現500等錯誤,在本機還是可以看到錯誤資訊,但如果已經上線,拋出的異常又不會讓使用者看到,想處理,可以去windows日誌裡面看,還可以加一個module,將異常資訊捕捉到,並發給相關人士。

 

建立一個項目,添加一個類ErrorReporterModule,繼承自IHttpModule,實現2個方法。void Init(HttpApplication context)和void Dispose()

 

在Init下加入如下代碼:

   1:  context.Error += (object sender, EventArgs e) =>
   2:                  {
   3:                      HttpContext ctx = HttpContext.Current;
   4:                      HttpRequest request = ctx.Request;
   5:                      Exception exception = ctx.Server.GetLastError();
   6:   
   7:                      HttpErrorMessage message = new HttpErrorMessage()
   8:                      {
   9:                          Message = exception.Message,
  10:                          StackTrace = exception.StackTrace,
  11:                          Source = exception.Source,
  12:                          HelpLink = exception.HelpLink,
  13:                          RequestForm = request.Form,
  14:                          RequestParam = request.Params,
  15:                          RequestUrl = request.Url.ToString(),
  16:                          QueryString = request.QueryString,
  17:                          Cookies = request.Cookies
  18:                      };
  19:                      container.Resolve<ErrorRecorder>().Record(message);
  20:                      ctx.Server.ClearError();
  21:                  };

剩下的就是處理這些異常了,主要的錯誤資訊就在Exception裡面,出錯時的環境則在request裡面。

處理拋出的異常可以用文本記錄方式也可以存入資料庫,但是這些處理都很被動,開發人員要不定時去查看這些資訊才可以看到。當然我們也可以配置一個郵件服務,將這些錯誤資訊主動發送到開發人員手中。

我們也可以配置相關的處理人員,這樣可以根據不同的網站,發送到對應的開發、測試那裡。

NEXT:配置web.config

在web.confg中加個:

<httpModules>

  <add name="ErrorReporterModule" type="Symbol.Web.Mvc.Modules.ErrorReporterModule"/>

</httpModules>

就可以了,

II7的傳統模式是和II6一樣的,就是對IIS6的相容。

但是在II7中的整合模式,我們還需要在system.webServer中加一次。

 

最後記錄一下idea:

1.配置對應的模組開發人員,哪個模組出錯了就那個人員去跟進

2.設定一個定時任務,如一個禮拜匯出一個異常報告

3.配置多種發送模式,文本、資料庫、郵件。。。

4.分辨不同的異常,像404之類的很可能是使用者打錯URL,這個就不需要發送了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.