|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Web;
|
using System.Web.Mvc;
|
|
using System.Web.Http.Filters;
|
using System.Net.Http;
|
using System.Web.Http.ExceptionHandling;
|
using System.Web.Http;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using System.Net;
|
|
namespace IStation.WebApi
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public class CustomHandleErrorAttribute : ExceptionFilterAttribute
|
{
|
/// <summary>
|
/// 自定义错误
|
/// </summary>
|
/// <param name="actionExecutedContext"></param>
|
public override void OnException(HttpActionExecutedContext actionExecutedContext)
|
{
|
IStation.Dto.ApiResult result = null;
|
if (actionExecutedContext.Exception is NotImplementedException)
|
{
|
IStation.LogHelper.WriteError("NotImplementedException," + actionExecutedContext.Exception.Message);
|
result = new IStation.Dto.ApiResult(IStation.Dto.ApiResultCode.Error, actionExecutedContext.Exception.Message);
|
}
|
else if (actionExecutedContext.Exception is TimeoutException)
|
{
|
IStation.LogHelper.WriteError("TimeoutException," + actionExecutedContext.Exception.Message);
|
result = new IStation.Dto.ApiResult(IStation.Dto.ApiResultCode.TimeOut, actionExecutedContext.Exception.Message);
|
}
|
|
else
|
{
|
IStation.LogHelper.WriteError(
|
string.Format("UnknowException,Exception:{0},StackTrace:{1}",
|
actionExecutedContext.Exception.Message,
|
actionExecutedContext.Exception.StackTrace));
|
result = new IStation.Dto.ApiResult(IStation.Dto.ApiResultCode.Error, actionExecutedContext.Exception.Message);
|
}
|
|
actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(result);
|
base.OnException(actionExecutedContext);
|
}
|
}
|
}
|