加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – MVC 3/4 HttpModule或ActionFilter

发布时间:2020-12-16 04:11:17 所属栏目:asp.Net 来源:网络整理
导读:我需要为进入我的应用程序的每个请求检查一些内容(Cookies). 在ASP.NET中我们使用HttpModule来完成这个任务,这个问题应该在MVC中使用什么?一些全局过滤器,或者我也可以使用HttpModuler,在MVC和常规ASP.NET之间的Request PipeLine有什么区别吗? 解决方法 MV
我需要为进入我的应用程序的每个请求检查一些内容(Cookies).

在ASP.NET中我们使用HttpModule来完成这个任务,这个问题应该在MVC中使用什么?一些全局过滤器,或者我也可以使用HttpModuler,在MVC和常规ASP.NET之间的Request PipeLine有什么区别吗?

解决方法

MVC是对ASP.NET的抽象,因此它们的“钩子”实际上取决于您想要注入逻辑的级别.动作过滤器将允许您挂钩到MVC特定事件:

> OnActionExecuting – 在执行控制器操作之前调用此方法.
> OnActionExecuted – 执行控制器操作后调用此方法.
> OnResultExecuting – 在执行控制器操作结果之前调用此方法.
> OnResultExecuted – 在执行控制器操作结果后调用此方法.

而HttpModule只允许您挂钩到ASP.NET(构建MVC)特定事件:

> BeginRequest – 请求已经开始.如果您需要在请求开始时执行某些操作(例如,在每个页面顶部显示广告横幅),请同步此事件.
> AuthenticateRequest – 如果要插入自己的自定义身份验证方案(例如,针对数据库查找用户以验证密码),请构建一个同步此事件的模块,并以您希望的方式对用户进行身份验证.
> AuthorizeRequest – 此事件在内部用于实现授权机制(例如,将访问控制列表(ACL)存储在数据库中而不是文件系统中).虽然您可以覆盖此事件,但没有太多合理的理由.
> PreRequestHandlerExecute – 此事件在HTTP处理程序执行之前发生.
> PostRequestHandlerExecute – 执行HTTP处理程序后发生此事件.
> EndRequest – 请求已完成.您可能希望构建一个调试模块,该模块在整个请求中收集信息,然后将信息写入页面.

所以这取决于你何时需要挂钩你的活动以及你需要哪些活动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读