ASP.NET Core异常和错误处理(8)

发布时间 - 2026-01-11 01:54:44    点击率:

在这一章,我们将讨论异常和错误处理。当 ASP.NET Core应用程序中发生错误时,您可以以各种不同的方式来处理。让我们来看看通过添加一个中间件来处理异常情况,这个中间件将帮助我们处理错误。

要模拟出错,让我们转到应用程序,运行,如果我们只是抛出异常的话,看看程序是如何运转转的。

using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.AspNet.Http; 
using Microsoft.Extensions.DependencyInjection; 
using Microsoft.Extensions.Configuration; 
namespace FirstAppDemo { 
 public class Startup { 
  public Startup() { 
   var builder = new ConfigurationBuilder() 
   .AddJsonFile("AppSettings.json"); 
   Configuration = builder.Build(); 
  } 
  public IConfiguration Configuration { get; set; } 
   
  // This method gets called by the runtime. 
  // Use this method to add services to the container. 
  // For more information on how to configure your application, 
  // visit http://go.microsoft.com/fwlink/?LinkID=398940 
  public void ConfigureServices(IServiceCollection services) { 
  } 
  
  // This method gets called by the runtime. 
  // Use this method to configure the HTTP request pipeline.
  public void Configure(IApplicationBuilder app) { 
   app.UseIISPlatformHandler(); 
   app.UseRuntimeInfoPage(); 
   
   app.Run(async (context) => { 
   throw new System.Exception("Throw Exception"); 
   var msg = Configuration["message"]; 
   await context.Response.WriteAsync(msg); 
   }); 
  } 
   
  // Entry point for the application. 
  public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
 } 
}

它只会抛出一个非常通用的异常信息。保存Startup.cs页面并运行您的应用程序。

您将看到我们未能加载此资源。出现了一个 HTTP 500 错误,内部服务器错误,那个页面不是很有帮助。它可能很方便得到一些异常信息。

让我们添加另一个中间件 UseDeveloperExceptionPage。

// This method gets called by the runtime. 
// Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app) { 
 app.UseIISPlatformHandler(); 
 app.UseDeveloperExceptionPage(); 
 app.UseRuntimeInfoPage(); 
 
 app.Run(async (context) => { 
  throw new System.Exception("Throw Exception"); 
  var msg = Configuration["message"]; 
  await context.Response.WriteAsync(msg); 
 }); 
}

这个中间件与其他的有点不同,其他中间件通常监听传入的请求并对请求做一些响应。

UseDeveloperExceptionPage不会如此在意传入的请求在之后的管道会发生什么。

它只是调用下一个中间件,然后再等待,看看管道中是否会出现异常,如果有异常,这块中间件会给你一个关于该异常的错误页面。

现在让我们再次运行应用程序。将会产生一个如下面的屏幕截图所示的输出。

现在如果程序中出现异常,您将在页面中看到一些想要看到的异常信息。你也会得到一个堆栈跟踪:这里可以看到Startup.cs第37行有一个未处理的异常抛出。

所有这些异常信息对开发人员将非常有用。事实上,我们可能只希望当开发人员运行应用程序时才显示这些异常信息。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ASP.NET  # Core  # 异常处理  # .NET 8新预览版使用 Blazor 组件进行服务器端呈现(项目体验)  # 国产化中的 .NET Core 操作达梦数据库DM8的两种方式(操作详解)  # 解决Win10无法安装.Net Framework 3.5提示错误代码0x800F081F  # win8/8.1系统安装.net framework 3.5出现0x800F0906代码错误的解决方  # ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)实例  # ASP.NET 程序员都非常有用的85个工具  # 无法启动.NET Framework NGEN v4.0.30319_X86服务的解决方法  # .NET8 依赖注入  # 让我们  # 应用程序  # 抛出  # 您将  # 开发人员  # 您的  # 给你  # 也会  # 将会  # 在这  # 很有  # 您可以  # 转到  # 只会  # 下一  # 可以看到  # 来看看  # 然后再  # 并对  # 所示 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在 React 中条件性地遍历数组并渲染元素  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何快速生成橙子建站落地页链接?  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  php打包exe后无法访问网络共享_共享权限设置方法【教程】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  *服务器网站为何频现安全漏洞?  html如何与html链接_实现多个HTML页面互相链接【互相】  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  JavaScript中的标签模板是什么_它如何扩展字符串功能  网站建设保证美观性,需要考虑的几点问题!  如何实现建站之星域名转发设置?  如何用狗爹虚拟主机快速搭建网站?  JavaScript模板引擎Template.js使用详解  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  图册素材网站设计制作软件,图册的导出方式有几种?  如何快速生成可下载的建站源码工具?  如何在万网利用已有域名快速建站?  Android仿QQ列表左滑删除操作  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Linux系统运维自动化项目教程_Ansible批量管理实战  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何为不同团队 ID 动态生成多个“认领值班”按钮  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel怎么实现验证码(Captcha)功能  如何用搬瓦工VPS快速搭建个人网站?  长沙企业网站制作哪家好,长沙水业集团官方网站?