ASP.NET Core基礎(chǔ)之異常中間件
了解異常中間件
首先,使用ASP.NET模板創(chuàng)建一個核心應(yīng)用程序。默認(rèn)情況下,ASP.NET核心應(yīng)用程序只是返回應(yīng)用程序未處理的異常的狀態(tài)代碼。如下所示,我們引發(fā)異常。
運(yùn)行應(yīng)用程序時,將得到以下輸出。
如上圖所示,它為您提供的狀態(tài)代碼為 500,這意味著內(nèi)部服務(wù)器錯誤。但是,作為開發(fā)人員,在開發(fā)應(yīng)用程序時,您應(yīng)該知道有關(guān)頁面上異常的詳細(xì)信息,以便可以采取必要的操作來修復(fù)錯誤。
如何使用異常中間件?
如果希望應(yīng)用程序顯示顯示有關(guān)未處理異常的詳細(xì)信息的頁面,則需要在請求處理管道中配置開發(fā)人員異常頁面中間件。
為此,請修改Startup類的Configure 方法,如下所示,以添加開發(fā)人員異常頁中間件,該中間件將處理應(yīng)用程序中發(fā)生的未處理異常。
現(xiàn)在運(yùn)行該應(yīng)用程序,它將顯示以下頁面,其中包含有關(guān)未處理異常的詳細(xì)信息。
如上圖所示,“開發(fā)人員異常”頁面包含五個選項(xiàng)卡,例如“堆棧”,“隊(duì)列”,“ Cookie”,“標(biāo)題”和“路由”。
- 1.堆棧:“堆棧”選項(xiàng)卡提供堆棧跟蹤信息,該信息指示確切的異常發(fā)生位置,文件名以及導(dǎo)致異常的行號。
- 2.查詢:“查詢”選項(xiàng)卡提供有關(guān)查詢字符串的信息。
- 3.Cookies:“ Cookies”選項(xiàng)卡顯示有關(guān)請求設(shè)置的cookie的信息。
- 4.標(biāo)頭:“標(biāo)頭”選項(xiàng)卡提供有關(guān)標(biāo)頭的信息,該信息由客戶端在發(fā)出請求時發(fā)送。
- 5.路由:“路由”選項(xiàng)卡提供有關(guān)方法的“路由模式”和“路由HTTP動詞”類型等信息。
現(xiàn)在,如果您驗(yàn)證“查詢”選項(xiàng)卡和“ Cookies”選項(xiàng)卡,那么您將看不到任何信息,因?yàn)槟鷽]有在URL中傳遞任何查詢字符串值,或者未在請求中設(shè)置Cookie。
注意:僅當(dāng)應(yīng)用程序在開發(fā)環(huán)境中運(yùn)行時,才應(yīng)啟用“開發(fā)人員異常頁面中間件”。 當(dāng)應(yīng)用程序在生產(chǎn)環(huán)境中運(yùn)行時,您不想共享詳細(xì)的異常信息。
如何自定義UseDeveloperExceptionPage中間件?
如果需要,還可以自定義UseDeveloperExceptionPage中間件。 您需要記住的一點(diǎn)是,每當(dāng)您要在ASP.NET Core中自定義中間件組件時,都需要使用相應(yīng)的Options對象。 例如
- 1.UseDeveloperExceptionPage =>使用DeveloperExceptionPageOptions對象自定義此中間件
- 2.UseDefaultFiles =>使用DefaultFilesOptions對象來自定義此中間件
- 3.UseStaticFiles =>使用StaticFileOptions對象來自定義此中間件
- 4.UseFileServer =>使用FileServerOptions對象來自定義此中間件
由于我們將自定義UseDeveloperExceptionPage()中間件組件,因此我們需要使用DeveloperExceptionPageOptions對象。 因此,如下所示修改Startup類的Configure方法。
如您在上面的代碼中看到的,我們正在使用一個名為SourceCodeLineCount的屬性。 DeveloperExceptionPageOptions類的SourceCodeLineCount屬性指定在導(dǎo)致異常的代碼行之前和之后要包含的代碼行數(shù)。
現(xiàn)在,如果在進(jìn)行上述更改的情況下運(yùn)行應(yīng)用程序,則將出現(xiàn)以下錯誤。 請查看錯誤的行號,即37行。同時,請查看錯誤行之前和之后的行號。
在哪配置UseDeveloperExceptionPage中間件?
我們需要在應(yīng)用程序的請求處理管道中盡早配置UseDeveloperExceptionPage()中間件,以便它可以處理未處理的異常,然后顯示帶有異常詳細(xì)信息的Developer Exception Page。
讓我們看看在導(dǎo)致異常的中間件之后配置UseDeveloperExceptionPage()中間件時發(fā)生了什么。 請如下所示修改Configure()方法。
完成上述更改后,當(dāng)我們運(yùn)行該應(yīng)用程序時,它不會顯示開發(fā)人員的異常頁面,而只會返回默認(rèn)的錯誤狀態(tài)代碼。 這就是為什么我們需要盡早配置UseDeveloperExceptionPage()中間件來處理請求處理管道中應(yīng)用程序未處理的異常的原因。
到此這篇關(guān)于ASP.NET Core基礎(chǔ)之異常中間件的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
三種方法解決ASP.NET?Core?6中的依賴項(xiàng)
這篇文章主要介紹了解決ASP.NET?Core?6依賴項(xiàng)的三種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-11-11.Net結(jié)構(gòu)型設(shè)計(jì)模式之裝飾模式(Decorator)
這篇文章介紹了.Net結(jié)構(gòu)型設(shè)計(jì)模式之裝飾模式(Decorator),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05C#Web應(yīng)用程序入門經(jīng)典學(xué)習(xí)筆記之一
C#Web應(yīng)用程序入門經(jīng)典學(xué)習(xí)筆記之一...2006-08-08.Net結(jié)構(gòu)型設(shè)計(jì)模式之外觀模式(Facade)
這篇文章介紹了.Net結(jié)構(gòu)型設(shè)計(jì)模式之外觀模式(Facade),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05