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的相關學習了。希望大家喜歡。