NetCore實現(xiàn)全局模型綁定異常信息統(tǒng)一處理(場景分析)

本文主要講解NetCore如何使用中間件捕獲模型綁定的異常信息
場景
在.NET Core 中請求中,如果參數(shù)的類型錯誤,我們在控制器中定義的方法是不會執(zhí)行的,當我們需要捕獲模型綁定的異常信息時,可以使用ApiBehaviorOptions.。接下來通過一個小demo給大家講解一下用法
實現(xiàn)代碼
public static void ConfigureModelBindingExceptionHandling(this IServiceCollection services)
{
services.Configure<ApiBehaviorOptions>(options =>
{
options.InvalidModelStateResponseFactory = actionContext =>
{
var errors = actionContext.ModelState?
.Where(e => e.Value.Errors.Count > 0)
?.Select(e => new object //api返回的Model信息
{
ErrorCode = -9998,
ErrorMessage=e.Value.Errors.First().ErrorMessage,
Status=false,
Data=null
})?.FirstOrDefault();
return new BadRequestObjectResult(errors);
//此時Http狀態(tài)碼返回的依舊是400,如果想返回正常的http狀態(tài)碼200,請使用下面一行代碼
//return new ObjectResult(errors);
};
});
}
Program.cs中注入
services.ConfigureModelBindingExceptionHandling();
演示
Controller中添加TestExp1方法
[HttpGet("TestExp1")]
public IActionResult TestExp1(int id)
{
_logger.LogInformation("測試");
return Ok();
}
在TestExp1中聲明的請求參數(shù)為int,所以我們在請求時使用字符串作為參數(shù)來請求,如下圖

請求的結果信息正好是我們封裝的信息,證明ApiBehaviorOptions能夠正常的捕獲到請求中參數(shù)類型錯誤的錯誤,
到此這篇關于NetCore實現(xiàn)全局模型綁定異常信息統(tǒng)一處理的文章就介紹到這了,更多相關NetCore全局異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
.NET/ASP.NET Routing路由(深入解析路由系統(tǒng)架構原理)
這篇文章主要介紹了.NET/ASP.NET Routing路由(深入解析路由系統(tǒng)架構原理),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
.NET?Core類庫項目中讀取appsettings.json配置的方法
ASP.NET?Core是一個全新的Web開發(fā)平臺,微軟在它上面構建了MVC、SingalR、GRPC、Orleans這樣廣泛使用的Web框架,今天通過本文給大家詳細介紹下.NET?Core讀取appsettings.json配置的方法,感興趣的朋友一起看看吧2022-03-03
xpath的數(shù)據(jù)和節(jié)點類型以及XPath中節(jié)點匹配的基本方法
xpath的數(shù)據(jù)和節(jié)點類型以及XPath中節(jié)點匹配的基本方法,學習xpath的朋友可以參考下。2010-09-09
Visual Studio(VS2017)配置C/C++ PostgreSQL9.6.3開發(fā)環(huán)境
這篇文章主要為大家詳細介紹了Visual Studio(VS2017)配置C/C++,PostgreSQL9.6.3開發(fā)環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
.NET?Core使用Redis實現(xiàn)創(chuàng)建分布式鎖
分布式鎖一般用于確保在分布式系統(tǒng)中,同一時間只有一個進程可以執(zhí)行某段代碼,本文將通過.NET?Core使用Redis實現(xiàn)創(chuàng)建分布式鎖,感興趣的可以了解下2025-01-01
ASP.net中實現(xiàn)基于UrlRewrite的防盜鏈功能
這篇文章主要介紹了ASP.net中如何實現(xiàn)基于UrlRewrite的防盜鏈,需要的朋友可以參考下2014-03-03
關于有些Asp.net項目發(fā)布后出現(xiàn)網(wǎng)址亂碼的解決方法
最近在部署一個網(wǎng)站,net2.0開發(fā)的,但是遇到一個很奇怪的問題。2011-07-07
asp.net Google的translate工具翻譯 API
很久前的一天,我想使用這個東西,然后看了下,GooGle的Translate工具目前沒有公開API,還是一個逐漸完善的過程,另一方面,利用一段很小的程序就可以得到我們想要的效果。2008-12-12

