Developer Exception Page Middleware in ASP.NET Core Application 在這篇文章中,我將向大家介紹,怎麼在ASP.NET Core應用程式中,使用異常頁面中間件,來處理我們程式中未處理的異常。在閱讀這篇文章之前,可以看看我這個系列的之前寫的文 ...
Developer Exception Page Middleware in ASP.NET Core Application
在這篇文章中,我將向大家介紹,怎麼在ASP.NET Core應用程式中,使用異常頁面中間件,來處理我們程式中未處理的異常。在閱讀這篇文章之前,可以看看我這個系列的之前寫的文章。異常處理是所有應用程式中,特別關鍵的一個點,我們可以通過各種方式方法,來處理異常,但是在這篇文章我要向大家講解,怎樣使用異常頁面中間件來處理異常。這篇文章中,我們主要討論下麵幾個點:
什麼是開發者異常頁面中間件?
怎樣在ASP.NET Core應用程式中,使用異常頁面中間件?
怎樣定製異常中間件?
我們在哪配置異常頁面中間件?
理解異常頁面中間件
預設情況下,ASP.NET Core應用程式,如果發生了異常,就是僅僅簡單的返回一個狀態碼。我們通過一個例子,來瞭解一下。我們修改一下Configure方法,返回一個異常:
運行程式:就會看到這樣的頁面。
正如你上圖所看到的,返回了一個500狀態碼,表示:伺服器內部異常。但是作為一個開發者,當你開發應用程式,你應該要在頁面上知道,異常的詳細信息,然後你才能分析,並採取措施解決Bug.
怎樣在ASP.NET Core應用程式中,使用DeveloperExceptionPage 中間件?
當程式發生異常的時候,如果你想在頁面中顯示異常的詳細信息的話,你需要使用Developer Exception Page中間件。所以我們來修改一下Configure方法。在我們的程式中,添加異常中間件。
然後運行應用程式,就看到為什麼發生異常了。也能定位錯誤了!
正如你在圖中所看到的,Developer Exception Page包含一些Tab,例如:Stack、Query、Cookies、Headers. Stack向你展示哪一行代碼發生的異常。Query向你展示Query Strings相關信息。Cookies向你展示請求設置的Cookies,Header向你展示客戶端發送的請求報文頭。
如果你查看Query Tab就會發現,沒有Querystring相關信息,因為你沒有在URL中傳遞querystring的信息,或者你沒有在請求中設置Cooikes.我們在後面的文章中,將會詳細討論querystring 以及Cookies.
請註意:請僅僅只在看來開發模式下麵使用Developer Exception Page中間件。因為你不想在生產環境顯示這個開發的異常信息的。
怎樣在ASP.NET Core應用程式中定製UseDeveloperExceptionPage中間件?
如果你想,你也可以定製異常中間件。你需要記住的是:不管你什麼時候,想要定製特定中間件,你需要使用下麵這些東西:
- UseDeveloperExceptionPage==>為了能定製異常中間件,需要使用DeveloperExceptionPageOption對象;
- UseDefaultFiles==>使用DefaultFileOptions對象來定製中間件;
- UseStaticFiles==>使用StaticFileOptions對象來定製中間件;
- UseFileServer==>使用FileServerOptions對象來定製中間件;
我們將要定製UseDeveloperExceptionPage中間件,所以我們需要使用DeveloperExceptionPageOptions對象。看下圖:
運行程式:
DeveloperExceptionPageOptions類的SourceCodeLineCount屬性指定了導致異常的代碼行之前和之後要包含的代碼行數。
我們在哪需要配置異常中間件UseDeveloperExceptionPage?
我們應該儘可能早的,在請求管道中配置異常中間件,這樣我們就能發現,並顯示異常信息在頁面中了。
我們來修改一下Configure方法。將異常中間件放在Run方法之後再註冊。
然後我們再次運行程式:
就會發現,不會在頁面顯示詳細的異常信息了。這也就是為什麼,我強調,我們應該儘可能早的配置異常中間件,以便處理程式中為處理的異常。
這篇文章,是我們ASP.NET Core基礎概念學習系列的最後一篇文章了,從後面的系列開始,我們就正式進入ASP.NET Core的相關學習了。希望大家喜歡。