• [.Net MVC] 过滤器以及异常处理


    项目:后台管理平台

    意义:程序发布后,不应该对用户显示因程序出错和崩溃而出现的错误信息,采用统一友好的错误页面,并将错误信息记录到日志中供管理人员查看。


    一、过滤器Filter

      Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑,以非常简单优美的方式实现横切关注点(Cross-cutting Concerns)。横切关注点是指横越应该程序的多个甚至所有模块的功能,经典的横切关注点有日志记录、缓存处理、异常处理和权限验证等。

      MVC框架支持4类Filter,Authorization Filter/Action Filer/Result Filter/Exception Filter,其中Authorization Filter的默认实现AuthorizeAttribute类,Action Filter和Result Filter的默认实现是ActionFilterAttribute类,Exception Filter的默认实现是HandleErrorAttribute。

      Filter可以像标记属性一样用在动作、控制器上,也可以在应用在全局上,在Global.asax.cs和FilterConfig.cs中添加全局绑定。

      如果默认的Filter无法满足开发要求,需要自己开发Filter时,最好的方法是继承默认的类,重写关键函数:

    Authorization Filter的扩展通过继承AuthorizeAttribute类,重写权限认证的逻辑函数AuthorizeCore;

    Action Filer和Result Filter的扩展通过继承ActionFilterAttribute类,重写OnActionExecuting/OnActionExecuted/OnResultExecuting/OnResultExecuted函数;

    Exception Filter的扩展通过继承HandleErrorAttribute类,重写OnException函数。


    二、异常处理

      在项目中采用了全局性的异常处理,因此通过继承HandleErrorAttribute,并重写OnException函数,目前只是增加了异常的日志记录。

      出现了异常还需要一个对用户友好的显示页面,在Web.config文件中 <system.web> 节点下添加如下节点:

    <customErrors mode="On">
        <error statusCode ="404" redirect="/Error/Index"/>
    </customErrors>

    对于程序运行时抛出的错误,系统会在~/Views/[current controller]或~/Views/Shared目录下查找名为Error的视图;对于404这类的HTTP错误,可以通过添加对应的节点,指定其显示的错误页面,再编写对应的控制器、视图即可。


    参考资源:

    http://www.cnblogs.com/willick/p/3331520.html

    http://www.cnblogs.com/powertoolsteam/p/MVC_Six.html

    关键字:.NET MVC,Filter,EXCEPTION,AOP

  • 相关阅读:
    WorkerMan中php后端及时推送消息给客户端
    解析Laravel框架下的Contracts契约
    如何在 Laravel 中使用 Slack 进行异常通知
    用户异常与模拟异常的派发
    [IDA] 将变量索引进行计算
    [反汇编]栈帧中函数的参数传入位置
    用户模拟异常的记录
    [反汇编]函数开始部分利用mov ebx,esp找到返回地址(_KTRAP_FRAME结构)
    [反汇编] 获取上一个栈帧的ebp
    CPU异常分析(以trap00为例)
  • 原文地址:https://www.cnblogs.com/belloworld/p/4760696.html
Copyright © 2020-2023  润新知