//using WIDESEA.Core.Enums;
//using WIDESEA.Entity.DomainModels.ResponseEntity;
//using WIDESEA.Entity.SystemsModels;
//using Microsoft.AspNetCore.Http;
//using Newtonsoft.Json;
//using System;
//using System.IO;
//using System.Net;
//using System.Text;
//using System.Threading.Tasks;
//using System.Xml.Serialization;
//namespace WIDESEA.Core.Extensions.Middleware
//{
// public class ExceptionHandlerMiddleWare
// {
// private readonly RequestDelegate next;
// public ExceptionHandlerMiddleWare(RequestDelegate next)
// {
// this.next = next;
// }
// public async Task Invoke(HttpContext context)
// {
// try
// {
// await next(context);
// }
// catch (Exception ex)
// {
// await HandleExceptionAsync(context, ex);
// }
// }
// private static async Task HandleExceptionAsync(HttpContext context, Exception exception)
// {
// if (exception == null) return;
// await WriteExceptionAsync(context, exception).ConfigureAwait(false);
// }
// private static async Task WriteExceptionAsync(HttpContext context, Exception exception)
// {
// Logger.WriteLog(LogEnum.Exception, null, exception.Message + exception.StackTrace, null);
// var response = context.Response;
// if (exception is UnauthorizedAccessException)
// response.StatusCode = (int)HttpStatusCode.Unauthorized;
// else if (exception is Exception)
// // response.StatusCode = (int)HttpStatusCode.BadRequest;
// response.StatusCode = (int)HttpStatusCode.InternalServerError;
// response.ContentType = context.Request.Headers["Accept"];
// //if (response.ContentType.ToLower() == "application/xml")
// response.ContentType = "application/json";
// ResponseData responseData = new ResponseData();
// responseData.SetResponseValue(ResponseType.ServerError);
// string reslutMsg = JsonConvert.SerializeObject(responseData);
// await response.WriteAsync(reslutMsg, Encoding.UTF8).ConfigureAwait(false);
// }
// ///
// /// 对象转为Xml
// ///
// ///
// ///
// private static string Object2XmlString(object o)
// {
// StringWriter sw = new StringWriter();
// try
// {
// XmlSerializer serializer = new XmlSerializer(o.GetType());
// serializer.Serialize(sw, o);
// }
// catch
// {
// //Handle Exception Code
// }
// finally
// {
// sw.Dispose();
// }
// return sw.ToString();
// }
// }
//}