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)文章
.Net行為型設(shè)計模式之模板方法模式(Template?Method)
這篇文章介紹了.Net行為型設(shè)計模式之模板方法模式(Template?Method),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
如何在WebForm中使用javascript防止連打(雙擊)
如何在WebForm中使用javascript防止連打(雙擊)...2007-01-01
利用C#遠(yuǎn)程存取Access數(shù)據(jù)庫
目前,基于數(shù)據(jù)庫服務(wù)器的桌面管理程序和Web程序已經(jīng)有太多的應(yīng)用了,尤其是網(wǎng)絡(luò)的大量普及,孤立地數(shù)據(jù)庫管理系統(tǒng)無法勝任分布式管理應(yīng)用,但是面對基于Access數(shù)據(jù)庫的現(xiàn)有的桌面應(yīng)用我們也無法完全的摒棄。我們利用.Net 遠(yuǎn)程處理功能將連接和存取Access的行為封裝為一個遠(yuǎn)程對象,供網(wǎng)絡(luò)中其它客戶端通過調(diào)用該遠(yuǎn)程對象來存取實(shí)際的Access數(shù)據(jù)庫。我們以 C# 2005 為開發(fā)語言來實(shí)現(xiàn)上述功能。2008-04-04
.Net Core使用SignalR實(shí)現(xiàn)斗地主游戲
本文詳細(xì)講解了.Net Core使用SignalR實(shí)現(xiàn)斗地主游戲的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01
使用vs2022在.net6中調(diào)試帶typescript的靜態(tài)頁面
這篇文章介紹了使用vs2022在.net6中調(diào)試帶typescript的靜態(tài)頁面,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
FileStreaReder和StreamReader兩個類介紹
由于最近需要對文件進(jìn)行處理,所以看了一下MSDN的System.IO讀取文件的兩個類。下面對兩個類簡單的整理一下2012-04-04

