• MVC 2中HandleErrorFilter的问题及其解决方法


    近日在使用MVC2的异常处理的时候,遇到一些问题

    1. 我们的Error.aspx是没有使用MasterPage

    2.通过如下代码测试

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace MvcApplication1.Controllers
    {
        [HandleError]
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                throw new ApplicationException();
    
            }
    
            public ActionResult About()
            {
                return View();
            }
    
            public ActionResult Test()
            {
                return View("Error");
            }
        }
    }
    

    我们发现会遇到500错误

    image

    通过工具,我看到下面代码

    image

    其实要讲起来,应该后面三句代码是多余的

    【备注】如果Error.aspx是有MasterPage的时候,又不会出错,这倒是很奇怪的。

    这样的话,其实我们可以定义一个自己的Handler,下面这个例子,我只是把Master的属性和后面三行删除掉了。这样问题就解决了,不管有没有MasterPage,也不管是什么异常都能被Handle了

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace MvcApplication1
    {
        public class MyErrorHandler:ActionFilterAttribute,IExceptionFilter
        {
            public MyErrorHandler()
            {
                View = "Error";
            }
            public void OnException(ExceptionContext filterContext)
            {
                string controllerName = (string)filterContext.RouteData.Values["controller"];
                string actionName = (string)filterContext.RouteData.Values["action"];
                HandleErrorInfo model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
                ViewResult result = new ViewResult();
                result.ViewName = this.View;
                result.ViewData = new ViewDataDictionary<HandleErrorInfo>(model);
                result.TempData = filterContext.Controller.TempData;
                filterContext.Result = result;
                filterContext.ExceptionHandled = true;
    
            }
    
            public string View { get; set; }
        }
    }
  • 相关阅读:
    leetcode 153. Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值(中)
    Python写实用小工具实现图片转字符画
    leetcode 215. Kth Largest Element in an Array 数组中的第K个最大元素
    leetcode 75. Sort Colors 颜色分类
    leetcode 347. Top K Frequent Elements 前 K 个高频元素
    记一次 异常断电导致测试服务器无法正常启动,默认进入救援模式(Redhat 7.8)
    NTP: 时钟源管理
    获取MobaXterm 保存的账号密码
    k8s 问题记录:MYSQL_USER="root", MYSQL_PASSWORD cannot be used for the root user
    K8S报错整理_kubectl: Error from server: error dialing backend: remote error: tls: internal error
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1858848.html
Copyright © 2020-2023  润新知