MVC WebApi自定义异常过滤器
来源:互联网 发布:友友贷网络贷款 编辑:程序博客网 时间:2024/05/20 08:01
WebApiExceptionHandleFilter
public class WebApiExceptionHandleFilter : ExceptionFilterAttribute
{
ILogger _logger = null;
private ISysEmailListService _sysEmailListService = null;
/// <summary>
///
/// </summary>
public WebApiExceptionHandleFilter()
{
}
/// <summary>
/// 异常时报错处理
/// </summary>
protected override void HandleException(HttpActionExecutedContext actionExecutedContext, string prefix, string ctrlName, string actionName, string userName)
{
if (_logger == null)
{
LazyInitializer.EnsureInitialized(ref _logger, () =>
{
var facLogger = ContainerManager.Container.Resolve<ILoggerFactory>();
return facLogger.CreateLogger<WebApiExceptionHandleFilter>();
});
}
var msg = $"uri=>{actionExecutedContext.Request.RequestUri.AbsoluteUri} userName=>{userName}";
_logger.LogError(new Random().Next(65530), actionExecutedContext.Exception, msg);
//TODO 业务处理
_sysEmailListService = ContainerManager.Container.Resolve<ISysEmailListService>();
//var logFactory = ContainerManager.Container.Resolve<ILoggerFactory>();
//_logger = logFactory.CreateLogger<WebApiExceptionHandleFilter>();
var title = ctrlName + "/" + actionName;
//针对不同控制器不同返回信息的做法
if (string.Equals(ctrlName.ToLower(), "HandQ".ToLower(), StringComparison.CurrentCultureIgnoreCase)|| string.Equals(ctrlName.ToLower(), "Customer".ToLower(), StringComparison.CurrentCultureIgnoreCase))
{
_sysEmailListService.SendEmail("钱包商城系统错误", title,
(actionExecutedContext.Exception+ msg ), SystemStaticParameter.EmallToWallet);
//篡改Response
actionExecutedContext.Response = new HttpResponseMessage(HttpStatusCode.OK);
var mallResult = new Response<string>
{
Status = false,
Message = SystemStaticParameter.HqResponseExc,
Data = "",
Code = ctrlName.ToLower()== "Customer".ToLower() ? SystemStaticParameter.Code1001 : SystemStaticParameter.Code2001
};
actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(mallResult);
return;
}
if (string.Equals(ctrlName.ToLower(), "Transaction".ToLower(), StringComparison.CurrentCultureIgnoreCase))
{
_sysEmailListService.SendEmail("钱包webapi交易处理时系统错误", title,
(actionExecutedContext.Exception + msg), SystemStaticParameter.EmallToWallet);
}
if (string.Equals(ctrlName.ToLower(), "Interview".ToLower(), StringComparison.CurrentCulture))
{
_sysEmailListService.SendEmail("钱包webapi面签处理时系统错误", title,
(actionExecutedContext.Exception + msg), SystemStaticParameter.EmallToSigned);
}
var errorCode = "Qb" + ErrorCodeManager.GetErrorCode(actionExecutedContext.Exception);
var result = new ResultModel<string>
{
Result = false,
Message = errorCode + SystemStaticParameter.SystemError,
Data = ""
};
actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(result);
}
}
- MVC WebApi自定义异常过滤器
- MVC WebApi自定义拦截器
- MVC系统过滤器、自定义过滤器
- MVC中的自定义过滤器
- MVC自定义过滤器
- 【MVC-自定义过滤器】
- 自定义异常处理过滤器
- MVC WebApi 路由设置(自定义) 分区Area
- MVC之自定义过滤器(Filter)
- MVC之 自定义过滤器(ActionFilterAttribute)
- MVC WEBAPI
- MVC 自定义过滤器(Filter)实现路由控制、异常处理、授权处理(获取客户端信息)
- MVC WebAPI框架里设置异常返回格式统一
- ASP.NET MVC ,WebAPI 自定义Basic授权方式
- MVC异常过滤器 (错误页)
- netty自定义url过滤器抛引用异常
- Spring MVC自定义异常页面
- MVC中的webApi
- 简单模拟剪刀石头布js
- 谷歌已邀请更多的测试人员
- 进程间通信(一)无名管道
- Genymotion 模拟器中安装微信
- <android>一个老控件Spnner解决一个bug的经历(三级联动)
- MVC WebApi自定义异常过滤器
- Java BigDecimal和double
- angular4项目开发中背景图片地址的引用
- Python学习笔记_字典、集合
- Button的imageEdgeInsets、titleEdgeInsets
- 【转】python格式化字符串的方法汇总
- java.io.IOException: No space left on device
- Top Journals of Computer Network & Wireless Communication
- 关于大文件传输问题的避免和解决办法