MVC 应用程序级别捕捉异常
2016-07-26 09:28
399 查看
捕捉异常:
找不到地址
using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Web; using System.Web.Http.Controllers; using System.Web.Mvc; using Newtonsoft.Json; using System.Web.Http.Filters; using Rongzi.BZone.Admin.Models; using Rongzi.BZone.Common.Util; namespace Rongzi.BZone.Admin.Functions { public class ApiExceptionFilterAttribute : System.Web.Http.Filters.ExceptionFilterAttribute { public override void OnException(HttpActionExecutedContext context) { if (context.Exception is NotImplementedException) { context.Response = new HttpResponseMessage(HttpStatusCode.NotImplemented); } LogHelper.Error("被系统过滤捕获的异常", context.Exception); StringBuilder sbMsg = new StringBuilder(); sbMsg.AppendFormat("ControllerName={0},ActionName={1},Msg={2},StackTrace={3}", context.ActionContext.ControllerContext.ControllerDescriptor.ControllerName, context.ActionContext.ActionDescriptor.ActionName, context.Exception.Message, context.Exception.StackTrace); LogHelper.Exception(sbMsg.ToString()); var customerError = new ResponseContext { Head = new ResponseHead { Ret = -1, Code = ErrCode.Failure, Msg = context.Exception.Message.ToString() }, Content = "" }; context.Response = context.Request.CreateResponse(HttpStatusCode.BadRequest, customerError); } } }
找不到地址
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Threading; using System.Threading.Tasks; using System.Web; namespace Rongzi.BZone.Admin.Functions { /// <summary> /// api返回异常状态时响应处理 /// </summary> public class ResponseDelegatingHandler : DelegatingHandler { async protected override Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { HttpResponseMessage response = await base.SendAsync(request, cancellationToken); if (response.StatusCode == HttpStatusCode.MethodNotAllowed || response.StatusCode == HttpStatusCode.NotFound) { var customerError = new ResponseContext { Head = new ResponseHead { Ret = -1, Code = ErrCode.Failure, Msg = (response.StatusCode == HttpStatusCode.MethodNotAllowed) ? "请求的资源上不允许请求方法(POST或GET)" : "访问的页面不存在" }, Content = "" }; response = request.CreateResponse(HttpStatusCode.BadRequest, customerError); } return response; } } }
相关文章推荐
- iOS开发拓展篇-XMPP简单介绍
- 100天土鸡饲养计划(7)
- 双目测距(一)--图像获取与单目标定
- A计划hdu2102
- Docker成长之路(一) :Docker介绍安装
- IONIC----06.menu-tab
- HDU 3791 二叉搜索树(用数组保存树)
- SVN-查看两版本区别
- 执行GP工具
- STM32之CAN ---CAN ID过滤器分析
- 计算机右键-管理打不开解决办法
- 如何在生产环境中运行Docker容器
- Cpp环境【POJ3045】【Vijos2982】Cow Acrobats 牛的杂技套路
- 光线跟踪引擎做到了
- Android App应用启动分析与优化
- 【HDU 1159】Common Subsequence(最长公共序列LCS算法)
- au3
- Signalr如何在服务器端主动发送消息到客户端
- Volley 启动流程
- 关于C++ string和c类型字符数组的对比