博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NetMVC过滤器
阅读量:5153 次
发布时间:2019-06-13

本文共 1853 字,大约阅读时间需要 6 分钟。

  APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理。这时候就用到了过滤器。

  MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常)。

如下表,

过滤器类型 接口 描述
Authorization IAuthorizationFilter

此类型(或过滤器)用于限制进入控制器或

控制器的某个行为方法

Exception IExceptionFilter

用于指定一个行为,这个被指定的行为处理

某个行为方法或某个控制器里面抛出的异常

Action

 

IActionFilter

 

用于进入行为之前或之后的处理

 

Result

 

IResultFilter 用于返回结果的之前或之后的处理

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Data;using System.Data.SqlClient;namespace WebMVC.Controllers{    public class HomeController : Controller    {               public ActionResult Index()        {                    Response.Write("这是动作方法!");            return View();        }        [WebMVC.Filter.MyFilter]        public ActionResult helo()        {            SqlConnection conn = new SqlConnection("错误");            return View();        }    }}

 

 

 

 

自定义一个过滤器

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.IO; namespace WebMVC.Filter{    public class MyFilter:FilterAttribute,IExceptionFilter    {        public void OnException(ExceptionContext filterContext)        {          //定义日志文件路径            string filePath = filterContext.HttpContext.Server.MapPath(@"\Filter\log.txt");            //写入日志信息            using (StreamWriter sw = File.AppendText(filePath))            {                sw.WriteLine("时间:{0}", DateTime.Now.ToString());                sw.WriteLine("控制器:{0}", filterContext.RouteData.Values["Controller"]);                sw.WriteLine("动作方法:{0}", filterContext.RouteData.Values["Action"]);                sw.WriteLine("异常信息:{0}", filterContext.Exception.Message);            }        }    }}

 

posted on
2019-05-01 20:03 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/tianranhui/p/10800589.html

你可能感兴趣的文章
函数积累
查看>>
Swift 入门之简单语法(六)
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
Java学习 · 初识 面向对象深入一
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>
bzoj1040: [ZJOI2008]骑士
查看>>
LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty's Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>