|  | @@ -5,11 +5,15 @@ using Masuit.MyBlogs.Core.Extensions;
 | 
	
		
			
				|  |  |  using Masuit.MyBlogs.Core.Infrastructure.Services;
 | 
	
		
			
				|  |  |  using Masuit.MyBlogs.Core.Models.Enum;
 | 
	
		
			
				|  |  |  using Masuit.Tools;
 | 
	
		
			
				|  |  | +using Masuit.Tools.Logging;
 | 
	
		
			
				|  |  |  using Masuit.Tools.Security;
 | 
	
		
			
				|  |  |  using Masuit.Tools.Systems;
 | 
	
		
			
				|  |  | +using Microsoft.AspNetCore.Diagnostics;
 | 
	
		
			
				|  |  |  using Microsoft.AspNetCore.Http;
 | 
	
		
			
				|  |  |  using Microsoft.AspNetCore.Mvc;
 | 
	
		
			
				|  |  | +using Microsoft.EntityFrameworkCore;
 | 
	
		
			
				|  |  |  using System;
 | 
	
		
			
				|  |  | +using System.Web;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  namespace Masuit.MyBlogs.Core.Controllers
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -48,6 +52,34 @@ namespace Masuit.MyBlogs.Core.Controllers
 | 
	
		
			
				|  |  |          [Route("ServiceUnavailable"), ResponseCache(Duration = 36000)]
 | 
	
		
			
				|  |  |          public ActionResult ServiceUnavailable()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +            var feature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
 | 
	
		
			
				|  |  | +            string err;
 | 
	
		
			
				|  |  | +            var req = HttpContext.Request;
 | 
	
		
			
				|  |  | +            var ip = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
 | 
	
		
			
				|  |  | +            switch (feature.Error)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                case DbUpdateConcurrencyException ex:
 | 
	
		
			
				|  |  | +                    err = $"异常源:{ex.Source},异常类型:{ex.GetType().Name},\n请求路径:{req.Scheme}://{req.Host}{HttpUtility.UrlDecode(req.Path)},客户端用户代理:{req.Headers["User-Agent"]},客户端IP:{ip}\t{ex.InnerException?.Message}\t";
 | 
	
		
			
				|  |  | +                    LogManager.Error(err, ex);
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                case DbUpdateException ex:
 | 
	
		
			
				|  |  | +                    err = $"异常源:{ex.Source},异常类型:{ex.GetType().Name},\n请求路径:{req.Scheme}://{req.Host}{HttpUtility.UrlDecode(req.Path)},客户端用户代理:{req.Headers["User-Agent"]},客户端IP:{ip}\t{ex?.InnerException?.Message}\t";
 | 
	
		
			
				|  |  | +                    LogManager.Error(err, ex);
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                case AggregateException ex:
 | 
	
		
			
				|  |  | +                    LogManager.Debug("↓↓↓" + ex.Message + "↓↓↓");
 | 
	
		
			
				|  |  | +                    ex.Handle(e =>
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        LogManager.Error($"异常源:{e.Source},异常类型:{e.GetType().Name},\n请求路径:{req.Scheme}://{req.Host}{HttpUtility.UrlDecode(req.Path)},客户端用户代理:{req.Headers["User-Agent"]},客户端IP:{ip}\t", e);
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +                case NotFoundException _:
 | 
	
		
			
				|  |  | +                    return View("Index");
 | 
	
		
			
				|  |  | +                default:
 | 
	
		
			
				|  |  | +                    LogManager.Error($"异常源:{feature.Error.Source},异常类型:{feature.Error.GetType().Name},\n请求路径:{req.Scheme}://{req.Host}{HttpUtility.UrlDecode(req.Path)},客户端用户代理:{req.Headers["User-Agent"]},客户端IP:{ip}\t", feature.Error);
 | 
	
		
			
				|  |  | +                    break;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              if (Request.Method.ToLower().Equals("get"))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  Response.StatusCode = 503;
 |