NetCore實(shí)現(xiàn)全局模型綁定異常信息統(tǒng)一處理(場景分析)
本文主要講解NetCore如何使用中間件捕獲模型綁定的異常信息
場景
在.NET Core 中請(qǐng)求中,如果參數(shù)的類型錯(cuò)誤,我們?cè)诳刂破髦卸x的方法是不會(huì)執(zhí)行的,當(dāng)我們需要捕獲模型綁定的異常信息時(shí),可以使用ApiBehaviorOptions.。接下來通過一個(gè)小demo給大家講解一下用法
實(shí)現(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); //此時(shí)Http狀態(tài)碼返回的依舊是400,如果想返回正常的http狀態(tài)碼200,請(qǐng)使用下面一行代碼 //return new ObjectResult(errors); }; }); }
Program.cs中注入
services.ConfigureModelBindingExceptionHandling();
演示
Controller中添加TestExp1方法
[HttpGet("TestExp1")] public IActionResult TestExp1(int id) { _logger.LogInformation("測(cè)試"); return Ok(); }
在TestExp1中聲明的請(qǐng)求參數(shù)為int,所以我們?cè)谡?qǐng)求時(shí)使用字符串作為參數(shù)來請(qǐng)求,如下圖
請(qǐng)求的結(jié)果信息正好是我們封裝的信息,證明ApiBehaviorOptions能夠正常的捕獲到請(qǐng)求中參數(shù)類型錯(cuò)誤的錯(cuò)誤,
到此這篇關(guān)于NetCore實(shí)現(xiàn)全局模型綁定異常信息統(tǒng)一處理的文章就介紹到這了,更多相關(guān)NetCore全局異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中遍歷各類數(shù)據(jù)集合的方法總結(jié)
C#中遍歷各類數(shù)據(jù)集合的方法,這里自己做下總結(jié):枚舉類型、遍歷ArrayList(Queue、Stack)、Winform窗體中的控件、HashTable哈希表等等,具體祥看下文2013-05-05深入Lumisoft.NET組件與.NET API實(shí)現(xiàn)郵件發(fā)送功能的對(duì)比分析
本篇文章對(duì)Lumisoft.NET組件與.NET API實(shí)現(xiàn)郵件發(fā)送的功能兩者進(jìn)行了深入的對(duì)比分析。需要的朋友參考下2013-05-05一步步打造簡單的MVC電商網(wǎng)站BooksStore(3)
這篇文章主要和大家一起一步步打造一個(gè)簡單的MVC電商網(wǎng)站,MVC電商網(wǎng)站BooksStore第三篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04asp.net 長文章通過設(shè)定的行數(shù)分頁
長文章通過設(shè)定的行數(shù)來實(shí)現(xiàn)分頁的代碼。2009-12-12ASP.net 驗(yàn)證碼實(shí)現(xiàn)代碼(C#)
asp.net 驗(yàn)證碼效果實(shí)現(xiàn)代碼2008-02-02asp.net request.PathInfo實(shí)現(xiàn)的url重寫
最近對(duì)在開始研究url重寫,對(duì)重寫的原理以及重寫之后引起的性能問題是研究的重點(diǎn),研究過程中發(fā)現(xiàn)了一種輕便的“url重寫方案”2009-04-04詳解免費(fèi)開源的DotNet任務(wù)調(diào)度組件Quartz.NET(.NET組件介紹之五)
本篇文章主要介紹免費(fèi)開源的DotNet任務(wù)調(diào)度組件Quartz.NET(.NET組件介紹之五),具有一定參考價(jià)值,有興趣的可以了解一下。2016-12-12Visual Studio 2017 community安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017 community安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09ASP.NET Core使用AutoMapper實(shí)現(xiàn)實(shí)體映射
本文詳細(xì)講解了ASP.NET Core使用AutoMapper實(shí)現(xiàn)實(shí)體映射的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03