原文: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 服务器异常信息页面

这会在稍后的章节中继续学习,本章节我们将不做任何深入研究

 

ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程的更多相关文章

  1. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”

    在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...

  2. ASP.NET Core 中间件Diagnostics使用 异常和错误信息

    ASP.NET Core 中间件(Middleware)Diagnostics使用.对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware). Diagnost ...

  3. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  4. ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式

    由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...

  5. ASP.NET Core应用的错误处理[4]:StatusCodePagesMiddleware中间件如何针对响应码呈现错误页面

    StatusCodePagesMiddleware中间件与ExceptionHandlerMiddleware中间件比较类似,它们都是在后续请求处理过程中“出错”的情况下利用一个错误处理器来完成最终的 ...

  6. (7)ASP.NET Core 中的错误处理

    1.前言 ASP.NET Core处理错误环境区分为两种:开发环境和非开发环境.●开发环境:开发人员异常页.●非开发环境:异常处理程序页.状态代码页.在Startup.Configure方法里面我们会 ...

  7. 本地化ASP.NET core模型绑定错误消息

    默认错误消息: MissingBindRequiredValueAccessor A value for the '{0}' property was not provided. MissingKey ...

  8. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  9. ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 中间件 上一章节中,我们我们有讲到 Startup 类中的 Confi ...

随机推荐

  1. [PReact] Reduce the Size of a React App in Two Lines with preact-compat

    Not every app is greenfield, and it would be a shame if existing React apps could not benefit from t ...

  2. [Angular2 Form] Reactive Form, show error message for one field

    <form [formGroup]="reactiveForm" novalidate autocomplete="off"> <div cl ...

  3. php中usort自定义排序如何使用

    php中usort自定义排序如何使用 一.总结 一句话总结:多写一个规则函数,而这个函数的写法和普通函数一样,调用的时候规则函数用函数名的字符串. 1.用户自定义规则函数有哪三个? usort — 使 ...

  4. 驱动程序调试方法之printk——自制proc文件(一)

    首先我们需要弄清楚proc机制,来看看fs/proc/proc_misc.c这个文件,从入口函数开始看: proc_misc_init(void)         #ifdef CONFIG_PRIN ...

  5. 洛谷 P1984 [SDOI2008]烧水问题

    洛谷 P1984 [SDOI2008]烧水问题 题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热. ...

  6. [CSS] Showing horizontal scrollbar always for the table

    table { display: block; overflow: scroll; width: 200px; height:95vh; }

  7. hadoop集群ambari搭建(1)之ambari-server安装

    Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应.管理和监控. Ambari眼下已支持大多数Hadoop组件,包含HDFS.MapReduce.Hive.Pi ...

  8. MySQL key分区(五)

    具体描写叙述总结请看MySQL分区(一) 样例:该样例为本人个人学习总结分享->具体说明-->有问题欢迎前来交流

  9. Facial keypoints detection Kaggle 竞赛系列

    3.2# Facial keypoints detection 作者:Stu. Rui QQ: 1026163725 原文链接:http://blog.csdn.net/i_love_home/art ...

  10. [CortexM0--stm32f0308]Option Byte

    问题描写叙述 option byte,算是IC中比較简单的功能,就是用户能够写入数据,对IC的某些功能进行配置.而IC在reset时,会载入当中的内容,进行推断,从而使用户的配置生效. option ...