ASP.NET Core Web API通过中间件或UseExceptionHandler异常处理方法
UseExceptionHandler
app.UseExceptionHandler(configure =>
{
configure.Run(async context =>
{
var exHeader = context.Features.Get<IExceptionHandlerPathFeature>();
var ex = exHeader.Error;
if (ex != default)
{
await context.Response.WriteAsJsonAsync(new { code = 500, errPath = exHeader.Path, msg = $"服务器内部错误->{ex.Message}" });
} });
});
自定义中间件
app.UseMiddleware<ErrorHandlingMiddleware>();
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Net; namespace TouristRouteWebApplaction.Middleware
{
public class ErrorHandlingMiddleware
{
private readonly RequestDelegate next;
public ErrorHandlingMiddleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context /* other dependencies */)
{
try
{
await next(context);
}
catch (Exception ex)
{
await HandleExceptionAsync(context, ex);
}
}
private static Task HandleExceptionAsync(HttpContext context, Exception ex)
{
var code = HttpStatusCode.InternalServerError; // 500 if unexpected
if (ex is KeyNotFoundException) code = HttpStatusCode.NotFound;
//else if (ex is MyUnauthorizedException) code = HttpStatusCode.Unauthorized;
//else if (ex is MyException) code = HttpStatusCode.BadRequest;
var result = JsonConvert.SerializeObject(new { error = ex.Message });//JsonConvert.SerializeObject(errorObj, opts.Value.SerializerSettings)
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)code;
return context.Response.WriteAsync(result);
}
}
}
ASP.NET Core Web API通过中间件或UseExceptionHandler异常处理方法的更多相关文章
- 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)
对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...
- ASP.NET Core Web API 集成测试
本文需要您了解ASP.NET Core Web API 和 xUnit的相关知识. 这里有xUnit的介绍: https://www.cnblogs.com/cgzl/p/9178672.html#t ...
- ASP.NET Core Web API 集成测试中使用 Bearer Token
在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. 在那里我使用了测试专用的Startup类, 里面的配置和开发时有一些区别, ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- ASP.NET Core Web API中使用Swagger
本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger 在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...
- 或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧
一.前言 在目前的软件开发的潮流中,不管是前后端分离还是服务化改造,后端更多的是通过构建 API 接口服务从而为 web.app.desktop 等各种客户端提供业务支持,如何构建一个符合规范.容易理 ...
- 从ASP.Net Core Web Api模板中移除MVC Razor依赖项
前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC VS WebApi (1)在ASP. ...
- ASP.NET Core Web API 最佳实践指南
原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 介绍 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但是,你难 ...
- 如何在ASP.NET Core Web API中使用Mini Profiler
原文如何在ASP.NET Core Web API中使用Mini Profiler 由Anuraj发表于2019年11月25日星期一阅读时间:1分钟 ASPNETCoreMiniProfiler 这篇 ...
- Asp.Net Core Web Api 使用 Swagger 生成 api 说明文档
最近使用 Asp.Net Core Web Api 开发项目服务端.Swagger 是最受欢迎的 REST APIs 文档生成工具之一,进入我的视野.以下为学习应用情况的整理. 一.Swagger 介 ...
随机推荐
- javaweb同一个项目打包两次放在同一个tomcat下
web.xml中配置: <context-param> <param-name>webAppRootKey</param-name> <param-value ...
- Oracle function函数中无法使用update更新
CREATE OR REPLACE FUNCTION changePY RETURN VARCHAR2 as PRAGMA AUTONOMOUS_TRANSACTION; --as 或者 is 后边 ...
- (jmeter笔记)jmeter用正则匹配响应数据,满足两个条件
方法1.用正则匹配响应数据,满足两个条件 \{[^}]+?"Id":(\d*)[^}]+?"Picking"[^}]+?\} 方法2. \{"Pick ...
- 实验四 Web服务器2
任务详情 基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用Linux Socket实现: Web服务器的客户端服务器,提交程序运行截图 实现GET即可,请求,响应要符合HTTP协议规范 服务 ...
- pytorch学习笔记(10)--完整的模型训练(待完善)
一.神经网络训练 # file : train.py # time : 2022/8/11 上午10:03 # function : import torchvision.datasets from ...
- CentOS下下查看硬盘型号、大小等信息(含Raid)
一.普通模式(该机硬盘没有做磁盘阵列) 1.fdisk -l 查看你的硬盘编号,如sda,sdb 等 2.smartctl --all /dev/sda [html] view plain copy ...
- 基于北斗gps设计的NTP网络时间服务器
基于北斗gps设计的NTP网络时间服务器 基于北斗gps设计的NTP网络时间服务器 京准电子科技官微--ahjzsz 随着5G等新型基础设施持续建设和发展,在未来万物互联的庞大信息网络中,跨路由节点之 ...
- 0.96OLED软件实现DMA串口接收数据模拟滚屏效果
实现的滚屏效果是当一屏写满时,则清空从开头接着写,不是上移的滚屏,虽然OLED有滚屏命令,但是会带水平位移效果,并且只能提前写好数据,类似于广告牌循环播放的那种. 首先是为OLED屏划分区域. 我选择 ...
- Selenium私房菜系列8 -- 玩转Selenium Server【OO】
本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始. 在<第一个Selenium RC测试案例>中,我们以命令&quo ...
- automagic webUI 自动化
https://www.cnblogs.com/tsbc/p/6244268.html