wyb
2021-05-11 49ce087bd2a34a150597e1cc1da157af242c0b6d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Linq;
using System.Web;
using System.Web.Http.Filters;
//using Pcb.Business.Biz;
using Pcb.Common;
using Pcb.Common.Enum;
using Pcb.Domain.Exceptions;
using Pcb.Infrastructure.Ioc;
 
namespace Jp.ApiCam.Infrastructures
{
    /// <summary>
    /// 
    /// </summary>
    public class ExceptionInterceptAttribute : ExceptionFilterAttribute
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            var req = actionExecutedContext.Request;
            IEnumerable<string> listUserAgent;
            req.Headers.TryGetValues("User-Agent", out listUserAgent);
            var userAgent = listUserAgent == null ? "" : listUserAgent.Aggregate((a, b) => a + " " + b);
            Exception ex = actionExecutedContext.Exception;
            base.OnException(actionExecutedContext);
            var exception = ex as SqlException;
            if (exception != null && exception.Number == 10061)//数据库不可用。
                LogHelper.Error("Error", ex);
            else
            {
                try
                {
                   
                }
                catch (Exception e)
                {
                    LogHelper.Error("Error", e);
                }
            }
 
            var friendlyEx = ex as FriendlyException;
            if (friendlyEx != null)
            {
                actionExecutedContext.Response = false ? AppResponseMessageHelper.OK(EnumApiStatusCode.Fail, friendlyEx.FriendlyMessage) : AppResponseMessageHelper.Fail(EnumApiStatusCode.Fail, message: friendlyEx.Message);
            }
            else
            {
                var errInfo = ConfigUtils.IsProductionEnvironment ? "服务器或网络异常" : actionExecutedContext.Exception.Message;
                actionExecutedContext.Response = false ? AppResponseMessageHelper.OK(EnumApiStatusCode.Fail, errInfo) : AppResponseMessageHelper.Error(EnumApiStatusCode.Error, errInfo);
            }
        }
 
   
    }
}