zoukankan      html  css  js  c++  java
  • MVC 应用程序级别捕捉异常

    捕捉异常:

    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;
            }
        }
    }
  • 相关阅读:
    求公约数和比值
    HTML5 文件上传
    js判断是pc还是移动端
    ssm整合
    如何获取数据表中自增主键的值
    MyBatis全局配置文件标签详解
    MyBatis介绍及使用
    基于Spring MVC的文件上传和下载功能的实现
    Spring IOC容器交给application域对象管理
    SpringMVC的简单介绍及使用
  • 原文地址:https://www.cnblogs.com/hongdada/p/5706209.html
Copyright © 2011-2022 走看看