如何创建用于MVC的自定义Http模块或处理程序

时间:2014-11-06 21:04:42

标签: asp.net-mvc asp.net-mvc-4

我想使用自定义http模块来处理我的MVC 4应用程序中的传入请求。如果用户来到应用程序中的任何页面,我想检查是否存在特定cookie,并在cookie不存在时重定向到其他页面。一旦用户访问了指定页面并填写了所需信息,cookie就会被添加到会话中。由于我希望每个页面上都有这种行为(控制器/动作),我认为自定义HttpModule可以解决这个问题。我可以检查BeginRequest中是否存在cookie并在必要时重定向,而不必在每个操作方法的开头添加此检查。

我遇到的问题是我只想对有效控制器/操作的请求执行此操作。如果正在请求图片或javascript文件,我不想检查cookie。由于控制器/视图的URL没有文件扩展名,我该怎么做?如何确定网址是有效路由还是只是请求其他内容?

1 个答案:

答案 0 :(得分:0)

我不知道您需要自定义HTTP模块。在我看来,您应该能够使用ActionFilter来完成此操作 - 也许是AuthorizeAttribute的自定义版本?

这些可以“全局”注册,以应用于所有控制器/操作。如果您创建一个新的MVC项目,FilterConfig文件夹中应该有一个App_Start类,它将HandleErrorAttribute添加为全局过滤器。