国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET中處理自定義錯誤的最佳方式

2019-11-17 03:26:20
字體:
來源:轉載
供稿:網友

要在asp.net中處理好自定義錯誤(Custom Errors)首先要拋棄使用web.config/customErrors。

<customErrors mode="RemoteOnly" defaultRedirect="/error/error.htm">    <error statusCode="404" redirect="/error/404.htm" /></customErrors>

使用web.config/customErrors最大的一個缺點是在顯示自定義錯誤頁面時會重定向:

http://m.survivalescaperooms.com/error/error.htm?aspxerrorpath=/cmt/p/3789549.html

這會帶來2個麻煩:

1. 會造成用戶反饋問題時提供的是重定向后的URL。

2. 會造成用戶無法通過刷新瀏覽器進行重試,或者問題解決后通過刷新瀏覽器恢復正常。

我們目前想到的最佳處理方式是在Global.asax.cs的application_Error中進行處理。

代碼如下:

復制代碼
PRotected void Application_Error(Object sender, EventArgs e){    Exception lastError = Server.GetLastError();    if (lastError != null)    {        if (lastError is HttpException)        {            if (((HttpException)lastError).ErrorCode == 404)            {                Response.StatusCode = 404;                Server.ClearError();                return;            }        }        CNBlogs.Infrastructure.Logging.Logger.Default.Error("Application_Error", lastError);        Response.StatusCode = 500;        Server.ClearError();    }}
復制代碼

由于我們在IIS中指定了404/500錯誤的自定義錯誤頁面,所以這里只需要返回狀態碼(需要IIS 7.0以上)。

IIS Error Pages

這樣處理后,還可以方便地在顯示自定義錯誤之前記錄到log4net日志。

另外需要注意的是一定要Server.ClearError(),不然ASP.NET會根據web.config/customErrors進行繼續處理(代碼中的自定義錯誤處理就會失效),錯誤信息也會被記錄到Windows日志(既然我們已經記錄到了log4net日志,就沒必要再記錄到Windows日志)。

你也許會問,幾行代碼就能解決的如此簡單的問題,值得興師動眾寫篇博客還要發在首頁?

值!因為之前我們沒有認真對待這個地方的問題,多次為此付出了代價。也許園子里還有人沒有注意這個地方的問題。

踩自己的坑,寫自己的博客,然后讓別人無坑可踩,我想這也是寫博客的一個價值體現吧。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 公安县| 祁连县| 陕西省| 昌宁县| 汽车| 泉州市| 金溪县| 锦屏县| 常宁市| 奇台县| 北宁市| 秦安县| 马山县| 台前县| 兴海县| 新乡县| 公主岭市| 玉树县| 郯城县| 昌黎县| 铜梁县| 宁安市| 鸡东县| 上蔡县| 孝昌县| 昌吉市| 五台县| 日照市| 古丈县| 思茅市| 高要市| 蕉岭县| 乌拉特前旗| 鄂伦春自治旗| 庆元县| 阜新| 鹤岗市| 通州市| 南皮县| 右玉县| 锦州市|