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;
            }
        }
    }
  • 相关阅读:
    【NOIP2007】守望者的逃离
    20200321(ABC)题解 by 马鸿儒 孙晨曦
    20200320(ABC)题解 by 王一帆
    20200319(ABC)题解 by 王一帆 梁延杰 丁智辰
    20200314(ABC)题解 by 董国梁 蒋丽君 章思航
    20200309(ABC)题解 by 梁延杰
    20200307(DEF)题解 by 孙晨曦
    20200306(ABC)题解 by 孙晨曦
    20200305(DEF)题解 by 孙晨曦
    20200303(ABC)题解 by 王锐,董国梁
  • 原文地址:https://www.cnblogs.com/hongdada/p/5706209.html
Copyright © 2011-2022 走看看