在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那么默认的,当这个Action抛出了异常时MVC将会显示Error视图,该视图位于~/Views/Shared目录下.

  设置HandleError属性

  可以通过设置下面这些属性来更改HandleErrorAttribute特性的默认处理:

  ExceptionType.指定过滤器处理那种或哪些类型的异常,如果没有指定该属性,过滤器将会处理所有的异常.

  View.指定发生异常时过滤器要显示的视图名称.

  Master.指定视图母版的名称,如果有的话.

  Order.指定过滤器应用的顺序,如果一个Action有多个HandleErrorAttribute过滤器.

  指定Order属性

  如果某个Action设置了多个HandleErrorAttribute,Order属性可以用来确定使用哪个过滤器.其值可以设置为从-1(最高优先级)到任何正整数之间的整数来标识其优先级,值越大,优先级别越低.Order属性遵循以下规则:

  应用到Controller上的过滤器将会自动应用到该Controller的所有Action上.

  如果Controller和Action都应用了HandleErrorAttribute,那么只要Order属性值相同,将会先执行Controller上的过滤器,而后才会执行Action上的过滤器.

  对于相同Order属性的过滤器,其执行先后次序不定.

  如果没有指定Order属性,则默认为-1,这意味着该过滤器将比其他的过滤器优先执行,除非其他过滤器指定了Order为-1.

  如果有多个过滤器可适用,那么第一个可以处理该异常的过滤器会被首先调用,然后针对该异常的处理将会终结.

  在View中获取异常信息

  ASP.NET MVC框架将异常信息存储在ViewDataDictionary中来传递给Error视图,该ViewDataDictionary的Model属性即是ExceptionContext类的一个实例,这个ViewData有下面几个键:

  ActionName:目标Action方法的名称

  ControllerName:目标Controller的名称

  Exception:异常对象.

  启用自定义错误处理

  下面我们来开启用于HandleErrorAttribute过滤器的自定义错误处理,打开程序的Web.config文件,在system.web节中加入一个customErrors元素,如下所示

 


 <system.web>  
  <customErrors mode="On" defaultRedirect="Error" /> 
  </system.web>

  处理Error视图中的错误

  有时候在Error视图中也会发生错误,这时ASP.NET将会显示其默认的错误页面(黄底红字),为了避免这种情况的出现,我们在Web.config文件的customErrors节中来自定义错误页面,如下:


 <system.web>  
  <customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
  <error statusCode="500" redirect="/Error.htm" /> 
  </customErrors> 
  </system.web>

ASP.net MVC自定义错误处理页面的方法相关推荐

  1. 【转】ASP.net MVC自定义错误处理页面的方法

    在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...

  2. [转载]针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结

    针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结 汪宇杰 2014-1-11 星期六 02:31 455 Reads 1 Comments 自定义错误页面和异常记录是个很古老的话题了, ...

  3. ASP.NET MVC 自定义路由中几个需要注意的小细节

    本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...

  4. ASP.NET MVC 自定义Razor视图WorkContext

    概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...

  5. ASP.NET MVC 访问html静态页面

    ASP.NET MVC 访问html静态页面 大家应该遇到过当我直接访问一个前端页面时,报404这个错误 那么我们就来解决访问View文件夹下的html页面的问题: 想说明问题出现的原因,很简单,就是 ...

  6. 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面

    使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面 使用Donut Caching和Donut Hole Caching在ASP.NET MVC ...

  7. asp.net mvc 自定义 pager 封装与优化

    asp.net mvc 自定义 pager 封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, ...

  8. ASP.NET MVC如何使用Ajax的辅助方法

    前言:前面我们已经简单的介绍过了MVC如何Jquery,因为我们如果使用Ajax的话必须要了解Jquery,这篇博客我们将大致了解一下ASP.NET MVC如何使用Ajax的辅助方法,此博客是我的读书 ...

  9. 在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图

    在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图 前提介绍 这个文章我们要讨论,在ASP.NET MVC模型的项目中,怎么选择一个最有效的方式来将多个数据模型(m ...

最新文章

  1. VS Code 调试Node.js express网站
  2. linux 定时任务 crontab 报错 service command not found 解决方法
  3. Mysql5.6.21源码安装
  4. 点触科技:构建实时计算和数据仓库解决方案
  5. 1006.c++中结构体赋值碰到的bug
  6. java 清屏_【图片】请问java编写中如何做到清屏啊。。。_java吧_百度贴吧
  7. Redis-03-Redis集群的搭建
  8. python 安卓库_python 库实战 - 安卓简易自动化框架
  9. 如何用计算机计算一元三次方程,计算器如何解一元三次方程?
  10. php windows vld,PHP之opcode及VLD使用
  11. 完全背包告诉你 2020 代表什么
  12. Live Streaming Paper--流媒体超低时延传输论文汇总
  13. kali 安装netspeed 网络流量监视器
  14. 【狂神说:秦疆】SpringMVC笔记
  15. InputNumber 数字输入框
  16. 计算机的组成:硬件和软件
  17. 核心期刊《中国兽医学报》
  18. python 正则去除括号以及里边的内容
  19. 幼儿园教师计算机运用论文,运用信息技术促进幼儿教师专业成长
  20. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java陈氏商城9pd36

热门文章

  1. API网关是否真的起到了它该有的作用?
  2. 一文梳理2019年腾讯广告算法大赛冠军方案
  3. 模仿并超越人类围棋手,KL正则化搜索让AI下棋更像人类,MetaCMU出品
  4. 26岁应届博士被聘985博导!入职半年实现学院顶会论文零的突破
  5. 为什么2G/3G和AI擦不出火花?他们用这篇论文告诉你答案
  6. Github 3.4k星,200余行代码,让你实时从视频中隐身
  7. 超干货!一位博士生80篇机器学习相关论文及笔记下载
  8. 北京大学计算机女博士经常看什么资料?
  9. 即学即用的 30 段 Python 非常实用的代码
  10. 【每日一算法】种花问题