当前位置: 首页 > news >正文

手机网站模板代码深圳均安网站制作

手机网站模板代码,深圳均安网站制作,华为网站建站,黄河勘测规划设计公司官方建议用app.UseExceptionHandler(/error)来集中处理异常#xff0c;本例是一个具体的应用。比如项目中有一个ViewModel#xff0c;要求Name最大长度为5/// summary/// 用户模型/// /summarypublic class UserModel{/// summary/// ID… 官方建议用app.UseExceptionHandler(/error)来集中处理异常本例是一个具体的应用。比如项目中有一个ViewModel要求Name最大长度为5 /// summary/// 用户模型/// /summarypublic class UserModel{/// summary/// ID/// /summarypublic int ID { get; set; }/// summary///名称/// /summary  [MaxLength(5, ErrorMessage 长度不能超过5)]public string Name { get; set; }} 在TestController中有两个Action都有异常的机率Get方法中一个异常是系统内置的0被整除另一个是我们自定义的业务层级异常(.NET架构小技巧8中有涉及);AddUser是有Model验证有可能Name超过5个字符后报异常。Error方法一个错误处理Action根据上下文的异常来分流系统内置异常还是自定业务异常。        /// summary/// get接口/// /summary/// returns/returns[HttpGet]public IActionResult Get(){var ran new Random();switch (ran.Next(1, 4)){case 1:int i 0;var j 10 / i;return Ok();case 2:throw new RegisteredException(这是一个错误);default:return Ok();}}/// summary/// 添加用户接口/// /summary/// param nameuser/param/// returns/returns[HttpPost(/adduser)]public IActionResult AddUser([FromBody] UserModel user){return Ok(user);}/// summary/// 错误处理页/// /summary /// returns/returns[HttpGet(/error)]public IActionResult Error(){var context HttpContext.Features.GetIExceptionHandlerFeature();//如果是业务自定义异常进行特殊处理if (context.Error is DaMeiException){return Problem(detail: context.Error.StackTrace, title: ${context.Error.Message}, type: HIS);}else{return Problem(detail: context.Error.StackTrace, title: context.Error.Message);}} 层级异常类using System; namespace WebApiError {/// summary/// 产品异常/// /summarypublic class DaMeiException : ApplicationException{/// summary/// /// /summary/// param namemessage/parampublic DaMeiException(string message) : base(message){}}/// summary/// His项目异常/// /summarypublic class HisException : DaMeiException{/// summary/// /// /summary/// param namemessage/parampublic HisException(string message) : base(message){}}/// summary/// Lis项目异常/// /summarypublic class LisException : DaMeiException{/// summary/// /// /summary/// param namemessage/parampublic LisException(string message) : base(message){}}/// summary/// 模块异常/// /summarypublic class RegisteredException : HisException{/// summary/// /// /summary/// param namemessage/parampublic RegisteredException(string message) : base(message){}} } Error的Action之所有调用到是因为Configure中添加如下代码把所有异常交给/error来处理。app.UseExceptionHandler(/error); 添加DaMeiProblemDetailsFactory来兼容各类异常自定义异常和Model验证异常using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.ModelBinding; using System.Collections.Generic;namespace WebApiError {/// summary/// /// /summarypublic class DaMeiProblemDetailsFactory : ProblemDetailsFactory{/// summary/// 处理业务错误/// /summary/// param namehttpContext/param/// param namestatusCode/param/// param nametitle/param/// param nametype/param/// param namedetail/param/// param nameinstance/param/// returns/returnspublic override ProblemDetails CreateProblemDetails(HttpContext httpContext, int? statusCode null, string title null, string type null, string detail null, string instance null){var problem new ProblemDetails(){Title string.IsNullOrEmpty(type) ? title : $业务异常错误{title},Detail detail,Status statusCode,Instance instance,Type  type};return problem;}/// summary/// 处理model验证错误/// /summary/// param namehttpContext/param/// param namemodelStateDictionary/param/// param namestatusCode/param/// param nametitle/param/// param nametype/param/// param namedetail/param/// param nameinstance/param/// returns/returnspublic override ValidationProblemDetails CreateValidationProblemDetails(HttpContext httpContext, ModelStateDictionary modelStateDictionary, int? statusCode null, string title null, string type null, string detail null, string instance null){var problem new ValidationProblemDetails(){Title Model验证错误,Detail detail,Status statusCode,Instance instance,Type type};foreach (var a in modelStateDictionary){var errorList new Liststring();foreach (var error in a.Value.Errors){errorList.Add(error.ErrorMessage);}problem.Errors.Add(new KeyValuePairstring, string[](a.Key, errorList.ToArray()));}return problem;}} } 在ConfigureServices中需要注入DaMeiProblemDetailsFactory services.AddTransientProblemDetailsFactory, DaMeiProblemDetailsFactory(); 其实还可以用Action过滤器来统一管理异常using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;namespace WebApiError {/// summary/// 自定义过滤器处理异常/// /summarypublic class DaMeiExceptionFilter : IActionFilter, IOrderedFilter{/// summary/// /// /summarypublic int Order { get; } int.MaxValue - 10;/// summary/// /// /summary/// param namecontext/parampublic void OnActionExecuting(ActionExecutingContext context) { }/// summary/// /// /summary/// param namecontext/parampublic void OnActionExecuted(ActionExecutedContext context){if (context?.Exception ! null){context.Result new ObjectResult(context.Exception.Message){StatusCode 500};context.ExceptionHandled true;} }} } 另外一种方式是通过Action过滤器来处理using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;namespace WebApiError {/// summary/// 自定义过滤器处理异常/// /summarypublic class DaMeiExceptionFilter : IActionFilter, IOrderedFilter{/// summary/// /// /summarypublic int Order { get; } int.MaxValue - 10;/// summary/// /// /summary/// param namecontext/parampublic void OnActionExecuting(ActionExecutingContext context){}/// summary/// /// /summary/// param namecontext/parampublic void OnActionExecuted(ActionExecutedContext context){if (context?.Exception ! null){if (context.Exception is DaMeiException){context.Result new ObjectResult(context.Exception.Message){Value $业务异常{ context.Exception.Message},StatusCode 500};}else{context.Result new ObjectResult(context.Exception.Message){Value context.Exception.Message,StatusCode 500};}context.ExceptionHandled true;}}} }添加全局过滤器services.AddControllers(options {options.Filters.Add(new DaMeiExceptionFilter()); });
http://www.pierceye.com/news/405490/

相关文章:

  • 免费外贸网站模板dede 网站栏目管理
  • 做网站有包括哪些东西站长素材网
  • 淘宝做促销的网站网站开发报价清单
  • 备案查询网站网站建设中可能遇到的问题
  • 怎么注册网站的步骤快速建站官网
  • 网站怎么做口碑wordpress淘宝客知乎
  • 响应式网站建设信息网站建设宽带
  • ps如何做网站超级链接微信公众平台运营中心电话
  • 网站建设怎么估算费用和报价h5特效网站欣赏
  • 东软集团建设网站娱乐网站排行榜
  • 石家庄网站建站米拓建站官网怎么用不了
  • 推广seo网站的公司金华网站建设公司排名
  • 阿里巴巴网站工作流程网站建设 教学设计
  • 电子商务网站建设的方法怎样用织梦做音乐网站
  • 临夏州住房和城乡建设局网站出词
  • 企业网站的综合要求最新领导班子7人名单
  • 通过阿里云建设企业网站联想企业网站建设的思路
  • 网站建设服务器的选择方案建设报名系统是正规网站吗
  • 揭阳高端模板建站WordPress背景音乐6
  • 如何使用云服务建设网站cpa之家 app推广平台
  • 网站设计策划书案例漳浦建设局网站
  • ps做分享类网站效果图设计公司工作室创业规划
  • 个人虚拟机做网站设计实例网站
  • 衡阳企业网站wordpress置顶文章顺序
  • 网站建设宗旨是指郑州有名的做网页的公司
  • 怎么0成本做网站企业网站如何设计网页
  • 做韦恩图网站课程分销平台
  • html5网站建设中企业整站推广
  • 织梦网站打开速度慢做抢单软件的网站
  • 51单片机可以做网站怎么建设游戏试玩平台网站