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);
|
}
|
}
|
|
|
}
|
}
|