public async Task Invoke(HttpContext context, IMessageProvider messageProvider) { try { await _next.Invoke(context); } catch (Exception ex) { if (_env.IsProduction()) { messageProvider.AddMessage(new Message(MessageType.Error, "Internal Server Error")); } else { messageProvider.AddException(ex); } _logger.LogCritical(ex, ex.Message); if (!context.Response.HasStarted) { context.Response.StatusCode = StatusCodes.Status500InternalServerError; context.Response.ContentType = "application/json"; var json = JsonConvert.SerializeObject(messageProvider.Messages); await context.Response.WriteAsync(json); } } }
/// <summary> /// 添加新消息 /// </summary> /// <param name="msg"></param> public static void AddMessage(Message msg) { Provider.AddMessage(msg); }