首页 新闻 赞助 找找看

asp.net core自定义异常特性,如何在捕获到异常后立即输出结果?

0
[已解决问题] 解决于 2021-02-27 10:58
/// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task OnExceptionAsync(ExceptionContext context)
        {
            var response = new ResponseModel(false, context.Exception.Message);

            context.Result = new JsonResult(response);

            await base.OnExceptionAsync(context);
        }

ResponseModel为我自定义的返回类型,包含三个属性:code,message,data。
但是结果没达到要求:

{
    "error": {
        "code": null,
        "message": "An internal error occurred during your request!",
        "details": null,
        "data": {
            "Server Error Code": 1146,
            "SqlState": "42S02"
        },
        "validationErrors": null
    }
}

如何在OnException或者OnExceptionAsync中捕获到异常后,立即返回结果?

屌丝大叔的笔记的主页 屌丝大叔的笔记 | 初学一级 | 园豆:2
提问于:2021-01-28 19:50

建议改进一下排版,支持 markdown 语法

dudu 3年前

@dudu: 哦哦,好的。下次提问题必须排版。

屌丝大叔的笔记 3年前

@dudu: 已改

屌丝大叔的笔记 3年前
< >
分享
最佳答案
0

楼主问题中的代码,可以使用markdown方式粘贴,不然排版实在不忍直视啊。
.net core自定义全局异常处理,可以参考:

奖励园豆:5
智客工坊 | 小虾三级 |园豆:1855 | 2021-01-29 12:53

嗯嗯,谢谢大佬。

屌丝大叔的笔记 | 园豆:2 (初学一级) | 2021-01-30 21:16
其他回答(1)
0
public override async Task OnExceptionAsync(ExceptionContext context)
        {
            var response = new ResponseModel(false, context.Exception.Message);

            context.Result = new ContentResult
            {
                // 返回状态码设置为200,表示成功
                StatusCode = StatusCodes.Status500InternalServerError,
                // 设置返回格式
                ContentType = "application/json;charset=utf-8",
                Content = JsonConvert.SerializeObject(response)
            };

            context.ExceptionHandled = true;
        }

主要是这段代码:context.ExceptionHandled = true;

屌丝大叔的笔记 | 园豆:2 (初学一级) | 2021-01-28 20:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册