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

 原文地址:http://www.cnblogs.com/linezero/p/Diagnostics.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用java底层实现邮件的发送(含测试,源码)

直接上代码:3个类,两个主要的类,一个测试类: 主类(Mail): /** * Title: Mail.java * Package org.service.impl * Description: TODO该方法的主要作用: * author A18ccms A18ccms_…

Java多线程:线程状态

转载自 Java多线程:线程状态 一. 线程状态类型 1. 新建状态(New):新创建了一个线程对象。 2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行…

Win10怎么关闭开机启动项

Win10怎么关闭开机启动项 我们可以首先打开电脑的运行对话框,按下键盘的WINR组合键,打开运行。 然后这里我们在运行对话框中输入命令msconfig确定,打开系统配置程序。 系统配置窗口,启动里面点击这里的任务管理器打开。 这时…

TypeScript 2.1发布

TypeScript是微软开发的一个JavaScript的超集,提供了最新的JavaScript特性以及可选的静态类型。近日,TypeScript 2.1发布。该版本提供了功能更为强大的类型检查器,并且让开发人员可以编写出更简洁的代码。以下是该版本带来的主要新特性&#…

使用spring实现邮件的发送(含测试,源码,注释)

此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看: 先写个接口 /** * Title: IMailserdService.java * Package org.service * Description: TODO该方法的主要作用&a…

你当前无权访问该文件夹 解决你当前无权访问该文件夹拒绝你访问该文件夹

我 这样就完成了 http://www.xitonghe.com/jiaocheng/windows7-5642.html https://jingyan.baidu.com/article/4b52d702aa01b3fc5c774b1b.html Win10正式版提示你当前无权访问该文件夹怎么办 https://jingyan.baidu.com/article/4b52d702aa01b3fc5c774b1b.html 1407345人看了…

SpringBoot+Vue博客系统---后端接口开发

Java后端接口开发 从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等。所以一般以Springboot作为我们的框架基础,这是离不开的了。 然后数据层,我们常用的是Mybati…

图说世界编程语言排行

TIOBE编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如Google、MSN、Yahoo!、Wikipedia、YouTube以及Baidu等)进行计算…

中国有超级计算机的大学,计算机专业排名看超算实力,ASC竞赛五大高校排名,中山大学第一...

ASC竞赛五大高校计算机专业的实力主要体现在算法与编程的逻辑运算上,因此计算机专业必须掌握大量基础数学知识,甚至很多是离散数学、模糊数学等人工智能逻辑数学,简单的程序软件应用和O2O程序实现其实都不是计算机专业实力的体现,…

IntelliJ IDEA设置JDK版本

IntelliJ IDEA设置JDK版本 临渊行 2019-06-13 13:59:13 46888 收藏 30 分类专栏: 这里有个坑 版权 一、背景 即使我电脑安装的JDK版本是8,然而在idea运行中常常提示xxjdk1.5已过时之类的,why?明明是我装的JDK8啊 二、解决 鼠标点击f…

从抵触到力推,.Net Core的成功让微软正视开源

微软在两年前做了一件当时非常令人惊讶的事情:将 .Net Core 开源。在此之前,微软曾表示开源是对软件经济的威胁。或许是为了更好的销售工具和云服务,亦或许是为了吸引更多的开发者到其平台,微软开始开源。到目前为止,这…

线程池的原理及实现

转载自 线程池的原理及实现 1、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线…

计算机考试行高怎么设置,Excel隔行调整行高的四种有效方法

领导要求把一份Excel表格的偶数行行高调整一下。这份表格可是有上百行的,逐一调整行高显然是不科学的。几经周折,费了我N多的口舌四处讨教,这个任务还是顺利地完成了。一、直接定位法先在表格的最后增加一个辅助列。在该列的第一行的单元格中…

亲身体验Intellij Idea从卡顿到顺畅

亲身体验Intellij Idea从卡顿到顺畅 idea power save mode 指尖飘落的程序 2018-01-16 14:12:12 11991 收藏 1 分类专栏: 工具 版权 power save mode 开启后代码不提示, 省电模式(经典模式:适用低配版电脑) htt…

在收购 Sun 的六年后,Oracle 终于瞄准了 Java 的非付费用户

你还在认为 Java 是免费的吗?再想想!(2017年你会欠我们很多钱) 在收购了 Sun 公司的六年后,Oracle 正在大规模的加大对违反其许可证的 Java 客户的审查力度。 越来越多的 Oracle 客户和合作伙伴被拉里埃里森的团队约谈…

mysql卸载再安装作死级尝试(测试前记得备份数据库)

安装之前一定要将自己的mysql清理干净 1、下载后得到zip压缩包. 2、解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.19 3、添加环境变量:我的电脑->属性->高级->环境变量 选择PATH,在其后面添加: 你的mysql 安装文件下…

按逆向思维定义软件测试,软件测试基础相关概念

测试基础知识是2008-9-20笔记整理,大部份内容来自软件评测师教程,年限已久,有些笔记已丢失。一,理清测试相关概念1,质量 : 实体特性的总和,满足明确或隐含要求的能力2,软件质量 &…

‘entityManagerFactory‘ that could not be found

springboot结合spring data jpa出现a bean named entityManagerFactory that could not be found 羿 2018-10-28 23:46:30 9064 收藏 1 Consider defining a bean named ‘entityManagerFactory’ in your configuration出现的解决方法 原文:https://blog.csdn.…

分享我的第一个asp.net core开发过程

.net core 这个东西感觉还是很不错的,学习了一下,并且做了一个微服务(IP地址查询服务) http://vju.cc/ip/ipquery 看上他的跨平台功能,所以就研究一下,中间有不少坑,有很多第三方类库还不支持.net core,就连…

Java并发编程:深入剖析ThreadLocal

转载自 Java并发编程:深入剖析ThreadLocal 一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本&…