ASP.NET Core 中的错误处理
1.前言
ASP.NET Core處理錯(cuò)誤環(huán)境區(qū)分為兩種:開(kāi)發(fā)環(huán)境和非開(kāi)發(fā)環(huán)境。
●開(kāi)發(fā)環(huán)境:開(kāi)發(fā)人員異常頁(yè)。
●非開(kāi)發(fā)環(huán)境:異常處理程序頁(yè)、狀態(tài)代碼頁(yè)。
在Startup.Configure方法里面我們會(huì)看到如下代碼:
2.開(kāi)發(fā)人員異常頁(yè)
向Startup.Configure方法添加代碼,以當(dāng)應(yīng)用在開(kāi)發(fā)環(huán)境中運(yùn)行時(shí)啟用此頁(yè):
if (env.IsDevelopment()){
app.UseDeveloperExceptionPage();
}
開(kāi)發(fā)人員異常頁(yè)僅當(dāng)應(yīng)用程序在開(kāi)發(fā)環(huán)境中運(yùn)行時(shí)才會(huì)啟用,而且調(diào)用UseDeveloperExceptionPage要配置于任何要捕獲其異常的中間件前面。
該頁(yè)包括關(guān)于異常和請(qǐng)求的以下信息:
●堆棧跟蹤
●查詢字符串參數(shù)(如果有)
●Cookie(如果有)
●request header
3.異常處理程序頁(yè)
在下面的示例中,UseExceptionHandler 在非開(kāi)發(fā)環(huán)境中添加異常處理中間件:
Razor Pages應(yīng)用模板提供“頁(yè)面”文件夾中的Error頁(yè)(.cshtml)和PageModel類(ErrorModel)。 對(duì)于MVC應(yīng)用,項(xiàng)目模板包括Error操作方法和Error視圖。操作方法如下:
不要使用HTTP方法屬性(如HttpGet)修飾錯(cuò)誤處理程序操作方法,因?yàn)闀?huì)阻止某些請(qǐng)求訪問(wèn)的方法。同時(shí)最好允許匿名訪問(wèn)方法,以便未經(jīng)身份驗(yàn)證的用戶能夠接收錯(cuò)誤視圖。
UseExceptionHandler中間還可以使用lambda進(jìn)行異常處理:
4.狀態(tài)代碼頁(yè)
一般情況下,ASP.NET Core應(yīng)用程序不會(huì)為HTTP狀態(tài)代碼(如“404-未找到”)提供狀態(tài)代碼頁(yè)的。但若要提供狀態(tài)代碼頁(yè),可以使用狀態(tài)代碼頁(yè)中間件。
4.1 UseStatusCodePages中間件
若要啟用常見(jiàn)錯(cuò)誤狀態(tài)代碼的默認(rèn)純文本處理程序,請(qǐng)?jiān)赟tartup.Configure方法中調(diào)用 UseStatusCodePages:
app.UseStatusCodePages();而這里有一點(diǎn)要注意的是,調(diào)用UseStatusCodePages中間件要在例如靜態(tài)文件中間件和 MVC中間件等中間件前面調(diào)用:
下面通過(guò)運(yùn)行應(yīng)用程序在瀏覽器地址欄上輸入一個(gè)不存在地址看看配置該中間件后的效果:
很顯然當(dāng)我們輸入一個(gè)不存在地址之后就會(huì)打開(kāi)一個(gè)處理錯(cuò)誤的狀態(tài)代碼頁(yè)。
UseStatusCodePages中間件還有兩種重載使用方法,具體運(yùn)行效果就不一一截圖了,大家自行測(cè)試。
●包含格式字符串的 UseStatusCodePages:
●包含lambda的UseStatusCodePages:
4.2 UseStatusCodePagesWithRedirect中間件
●向客戶端發(fā)送“302 - 已找到”狀態(tài)代碼。
●將客戶端重定向到URL模板中的位置。
下面我們?cè)赟tartup.Configure方法中調(diào)用UseStatusCodePagesWithRedirect:
運(yùn)行應(yīng)用程序在瀏覽器上輸入不存在地址https://localhost:44353/1看看配置該中間件后的效果,你會(huì)發(fā)覺(jué)當(dāng)我們輸入上述地址后會(huì)跳轉(zhuǎn)到https://localhost:44353/Error/404鏈接去了,并顯示:
這就說(shuō)明白當(dāng)我們輸入一個(gè)不存在地址之后會(huì)重定向中間件設(shè)置的地址頁(yè)面去了。
原文地址:https://www.cnblogs.com/wzk153/p/10950702.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core 中的错误处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在ASP.Net Core 中使用枚举类
- 下一篇: ASP.NET Core SameSit