微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – MVC 3/4 HttpModule或ActionFilter

我需要为进入我的应用程序的每个请求检查一些内容(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 – 请求已完成.您可能希望构建一个调试模块,该模块在整个请求中收集信息,然后将信息写入页面.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐