ASP.NET Core 異常和錯誤處理 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程


原文:ASP.NET Core 異常和錯誤處理 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

ASP.NET Core 異常和錯誤處理

上一章節中,我們學習了 ASP.NET Core 中的 中間件, 知道中間件是一種裝配到應用程序管道以處理請求和響應的組件

本章節我們繼續來深入了解中間件,這次我們學習的將會是異常和錯誤處理中間件

當我們的 ASP.NET Core 應用程序出現錯誤時,我們有多種方式處理它們

上一章節中提到的 Microsoft.AspNetCore.Diagnostics NuGet 包提供了相關的附加的中間件,這些中間件可以幫助我們處理異常和錯誤

app.UseDeveloperExceptionPage 中間件

為了模擬錯誤,我們回到 app.Run() 方法,看看如果我們每次命中這個中間件時拋出異常,應用程序的行為會是怎么樣的

public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { throw new System.Exception("Throw Exception"); var msg = Configuration["message"]; await context.Response.WriteAsync(msg); }); } 

保存 Startup.cs 頁面並運行應用程序,顯示如下

我們可以看到一個錯誤頁面,顯示 HTTP 500 錯誤,一個內部服務器錯誤

提示在文件 Startup.cs 42 行的代碼中拋出了一個異常 Throw Exception

當然了,這是在調試模式下,如果我們注釋掉調試模式,也就是注釋掉下面的語句

public void Configure(IApplicationBuilder app, IHostingEnvironment env) { /*  if (env.IsDevelopment())  {  app.UseDeveloperExceptionPage();  }  */ app.Run(async (context) => { throw new System.Exception("Throw Exception"); var msg = Configuration["message"]; await context.Response.WriteAsync(msg); }); } 

保存 Startup.cs 頁面並運行應用程序,它只會拋出一個非常通用的消息,顯示如下

我們可以看到沒有加載這個資源。因為發生了一個 HTTP 500 錯誤,一個內部服務器錯誤,這不是很有幫助

但對於線上環境來說,它隱藏了錯誤的原因和位置,增加了應用程序的安全性

app.UseDeveloperExceptionPage

現在,我們回到中間件 app.UseDeveloperExceptionPage

這個中間件與其它中間件有些不同,其它中間件通常會檢查傳入的請求並對該請求做出一些響應

但 UseDeveloperExceptionPage 中間件不關心傳入的請求,因為它總是在管道后發生

它會調用下一個中間件,然后等待管道后面的任何事情是否會產生異常,如果有異常,這個中間件會給返回一個錯誤頁面,並顯示有關該異常的詳細信息

我們還可以從 UseDeveloperExceptionPage 中間件返回的結果中看到原始異常詳細信息

所有這些信息對開發人員都非常有用

當然,事實上,我們可能只想在開發人員運行應用程序時顯示這些信息,也就是開發環境上顯示異常的詳細信息,而在線上環境則顯示一個 500 服務器異常信息頁面

這會在稍后的章節中繼續學習,本章節我們將不做任何深入研究

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM