解释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、标头等。

更新于:2021年6月22日

719 次查看

启动您的职业生涯

通过完成课程获得认证

开始
广告