解釋ASP.NET Core中的錯誤處理機制
在構建或使用web應用程式時,遇到錯誤是很常見的。因此,為您的web應用程式配置錯誤處理並優雅地處理錯誤以向用戶提供合適的響應非常重要。這提高了應用程式的可用性,並使其更加健壯。
在正常的應用程式流程中可能會發生許多不同的錯誤。但是,兩種重要的錯誤型別是異常和錯誤狀態程式碼,例如404、502。當應用程式遇到意外情況時,就會發生異常。異常的一個非常常見的示例是臭名昭著的NullReferenceException,每當您嘗試呼叫空物件上的方法或訪問其屬性時都會引發此異常。
當異常在中介軟體管道中發生時,它會向後傳播到管道中,使每個中介軟體都有機會處理該異常。如果沒有中介軟體捕獲異常,則框架會向用戶返回500錯誤狀態程式碼。500狀態程式碼代表“伺服器錯誤”,表示伺服器上出現問題。
有時,錯誤不會導致異常,而是直接返回錯誤狀態程式碼。例如,當路由器無法處理URL路徑時,它會返回通用的404錯誤狀態程式碼。
錯誤處理中介軟體允許您在將響應傳送給使用者之前修改它。透過控制錯誤響應,您可以顯示對使用者友好的錯誤,提供有關錯誤原因的更多資訊,並避免向用戶公開任何敏感資訊。通常,錯誤處理中介軟體會返回錯誤詳細資訊,或者它可以生成一個友好的HTML頁面以在響應中傳送。
最佳實踐是將錯誤處理中介軟體放在中介軟體管道的早期。這確保它將捕獲應用程式以及後續中介軟體生成的任何錯誤。它像所有中介軟體一樣在Startup.Configure()方法中配置。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ if (env.IsDevelopment()){ app.UseDeveloperExceptionPage(); }else{ app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints =>{ endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }
您可以看到上面的程式碼為開發環境配置了開發人員異常頁面,也為生產環境配置了自定義錯誤處理頁面。開發人員異常頁面提供了其他詳細資訊,以幫助您在開發中排除錯誤。它包含異常資訊,例如堆疊跟蹤、查詢引數、cookie、標頭等。
廣告