You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ttxh-sc/VOL.Core/Middleware/ExceptionHandlerMiddleWare.cs

53 lines
1.7 KiB

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using VOL.Core.Const;
using VOL.Core.EFDbContext;
using VOL.Core.Enums;
using VOL.Core.Extensions;
using VOL.Core.ManageUser;
using VOL.Core.Services;
namespace VOL.Core.Middleware
{
public class ExceptionHandlerMiddleWare
{
private readonly RequestDelegate next;
public ExceptionHandlerMiddleWare(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context)
{
try
{
(context.RequestServices.GetService(typeof(ActionObserver)) as ActionObserver).RequestDate = DateTime.Now;
await next(context);
Logger.Info(LoggerType.System);
}
catch (Exception exception)
{
var env = context.RequestServices.GetService(typeof(IWebHostEnvironment)) as IWebHostEnvironment;
string message = exception.Message + exception.InnerException;
Logger.Error(LoggerType.Exception, message);
if (!env.IsDevelopment())
{
message = "服务器处理异常";
}
else
{
Console.WriteLine($"服务器处理出现异常:{message}");
}
context.Response.StatusCode = 500;
context.Response.ContentType = ApplicationContentType.JSON;
await context.Response.WriteAsync(new { message, status = false }.Serialize(), Encoding.UTF8);
}
}
}
}