ASP.NET Core 中间件Diagnostics使用 异常和错误信息
ASP.NET Core 中间件(Middleware)Diagnostics使用。对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware)。
Diagnostics中间件,主要功能是用于报告和处理ASP.NET Core中的异常和错误信息,以及诊断Entity Framework核心迁移错误。
其中还有其他几项功能,欢迎页,错误代码页、如404 页等。以及一个还算不错的日志查看功能,这个功能也是很多人需要的功能,直接在线查看日志。
下面来一一讲解功能。
新建ASP.NET Core Web Application 项目-》Web应用程序 选择不进行身份验证。
创建好的项目,会自动引用Diagnostics 中间件。
NuGet引用:
Install-Package Microsoft.AspNetCore.Diagnostics
报告异常和错误信息
默认创建好的项目会自动在Startup中Configure 方法加上这一段

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

这就是异常信息的报告以及处理。
在开发环境下会显示详细的错误信息 app.UseDeveloperExceptionPage();,在非开发环境,跳转至 app.UseExceptionHandler("/Home/Error"); /Home/Error页。
如果你想一直展示错误信息就将app.UseDeveloperExceptionPage(); 放置在if 外面。或者在发布之后,将对应的系统环境调成Development 以显示错误信息。
项目中使用了EF Core 。可以添加 app.UseDatabaseErrorPage(); 以显示EF Core 相关信息。
欢迎页
在Startup.cs中的Configure 方法加入:app.UseWelcomePage();
启动程序就会显示如下页面。有扩展方法,可以指定对应的页面。

HTTP错误代码页
默认程序中404 或者500 等相关错误,并不会展示页面,只会返回对应的代码。
同样在Startup.cs中的Configure 方法加入:app.UseStatusCodePages();
访问不存在的页面会显示如下。

下面是简单的自定义错误信息
app.UseStatusCodePages("text/plain", "Error, status code: {0} \r LineZero");

还可以使用
app.UseStatusCodePagesWithRedirects("~/errors/{0}"); // 相对根路径
app.UseStatusCodePagesWithRedirects("/base/errors/{0}"); // 绝对路径
也可以使用
app.UseStatusCodePagesWithReExecute("/error/http{0}");
上面两者的区别一个是跳转,一个是执行。
日志查看Elm
日志查看,也是Diagnostics 中间件的一个功能。用起来也比较方便。
需要额外添加一个 Microsoft.AspNetCore.Diagnostics.Elm 包。
安装好包打开Startup.cs ,首先在 ConfigureServices 方法加入服务。
services.AddElm(elmOptions =>
{
elmOptions.Filter = (loggerName, loglevel) => loglevel == LogLevel.Debug;
});
筛选日志级别为Debug
然后再Configure 方法加入
app.UseElmPage();
app.UseElmCapture();
app.UseElmPage(); 为指定日志显示页,app.UseElmCapture(); 记录日志。
运行程序访问 http://localhost:5000/Elm ,就可以查看一些信息记录。

这个组件还是有一些问题,我们可以做一些改造,更符合实际情况。
官方GitHub:https://github.com/aspnet/Diagnostics
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
ASP.NET Core 中间件Diagnostics使用 异常和错误信息的更多相关文章
- ASP.NET Core 中间件Diagnostics使用
ASP.NET Core 中间件(Middleware)Diagnostics使用.对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware). Diagnost ...
- ASP.NET Core 中间件 自定义全局异常中间件以及 MVC异常过滤器作用
中间件是一种装配到应用管道以处理请求和响应的软件. 每个组件: 选择是否将请求传递到管道中的下一个组件. 可在管道中的下一个组件前后执行工作. 请求委托用于生成请求管道. 请求委托处理每个 HTTP ...
- ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 中间件 上一章节中,我们我们有讲到 Startup 类中的 Confi ...
- ASP.NETCore学习记录(二) —— ASP.NET Core 中间件
ASP.NET Core 中间件 目录: 什么是中间件 ? IApplicationBuilder 使用 IApplicationBuilder 创建中间件 Run.Map 与 Use 方法 实战中间 ...
- (4)ASP.NET Core 中间件
1.前言 整个HTTP Request请求跟HTTP Response返回结果之间的处理流程是一个请求管道(request pipeline).而中间件(middleware)则是一种装配到请求管道以 ...
- [转帖]ASP.NET Core 中间件(Middleware)详解
ASP.NET Core 中间件(Middleware)详解 本文为官方文档译文,官方文档现已非机器翻译 https://docs.microsoft.com/zh-cn/aspnet/core/ ...
- Asp.net core中间件实现原理及用法解说
简述asp.net core中间件的实现思路 原文地址:https://www.cnblogs.com/shengyu-kmust/p/11583974.html 一次http请求的过程,就是对一个R ...
- ASP.NET Core 中间件自定义全局异常处理
目录 背景 ASP.NET Core过滤器(Filter) ASP.NET Core 中间件(Middleware) 自定义全局异常处理 .Net Core中使用ExceptionFilter .Ne ...
- ASP.NET Core 中间件的使用(三):全局异常处理机制
前言 我们经常听到"秒修复秒上线",觉得很厉害的样子. 其实不然,这只是一个调侃而已,出现问题的方式很多(逻辑漏洞.代码异常.操作方式不正确等). 我们今天来说代码异常问题怎么快速 ...
随机推荐
- 【Javascript】数组之二
Array 对象方法 方法 描述 concat() 连接两个或更多的数组,并返回结果. copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中. entries() 返回数组的可迭 ...
- wordpress调用tags作为keywords关键词标签
有网友问怎么调用wordpress tags作为页面keywords标签?wordpress开发文档有提供了get_tags函数,我们进行改造一下就ok了.下面随ytkah一起来看看如何实现.首先下面 ...
- Ofbiz项目学习——阶段性小结——视图
一.简要介绍 1.按照SQL的视图概念:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表.视图包含行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 2. ...
- Angular pagination分页模块 只提供分页参数处理 不处理分页记录数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Codechef August Challenge 2019 Chef and Gordon Ramsay
[传送门] 题目即求所有的三元组,相对大小关系同 $p_1,p_2,p_3$. 题解说都很清楚,这里写一下过程整理一下思路. 如果我们枚举中间这个元素,那么就是统计子树内外有多少个大于这个数和小于这个 ...
- OpenCV 学习笔记(2) 使用鼠标绘制矩形并截取和保存矩形区域图像
http://www.cnblogs.com/lidabo/p/3437587.html 0 效果展示 1工程源码 #include <opencv2/core/core.hpp> # ...
- 在windbg调试会话中查找.NET版本
如何在调试会话中找到调试对象中使用的.NET运行时版本?以自动/脚本方式,不使用调试器扩展或符号? 答案: !for_each_module .if ( ($sicmp( "@#Module ...
- luogu P1550 [USACO08OCT]打井Watering Hole
题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to his N (1 <= N <= 300) pastur ...
- jQuery基础案例
一.隔行换色 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- Xilinx ISE中使用Synplify综合报错的原因之二
今天发现,不同的器件型号下由IP core生成的模块有时不通用,在实现(implementation)时会出现translate错误.