异常中间件

这个中间价比较简单,只是当异常发生时,用来统一返回的异常格式

namespace WeCharGroupTest.Untities
{
    public class ExceptionMiddleware
    {
        private readonly ILogger _logger;
        private readonly RequestDelegate _next;
        public ExceptionMiddleware(ILogger<ExceptionMiddleware> logger, RequestDelegate next)
        {
            _logger = logger;
            _next = next;
        }

        public async Task Invoke(HttpContext httpContext)
        {
            try
            {
                await _next(httpContext);
            }
            catch(Exception e)
            {
                httpContext.Response.ContentType = "application/json";

                _logger.LogError(e, httpContext.Request.Path);

                var result = new Response<string>()
                {
                    Status = 400,
                    msg = e.Message
                };

                await httpContext.Response.WriteAsync(result.ToJson());//ToJson是一个扩展方法
            }
        }

    }

    public class Response<T>
    {
        /// <summary>
        /// </summary>
        public int Status { get; set; } = 200;

        /// <summary>
        /// </summary>
        public string msg { get; set; } = "操作成功!";

        /// <summary>
        /// </summary>
        public T Data { get; set; }

        /// <summary>
        /// </summary>
        /// <param name="data"></param>
        /// <param name="msg"></param>
        public void Success(T data, string msg = "")
        {
            this.Status = 200;
            this.msg = msg;
            this.Data = data;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值