【发布时间】:2013-01-14 03:41:49
【问题描述】:
我想拦截进入我的 MVC 应用程序的每个请求 ControllerName 和 Action 已被解析,但在请求得到服务之前,即在它到达适当的操作之前。
我想到了两种方法:
1) 我可以写一个HttpModule 来拦截每个传入的HttpRequest,读取HttpContext.Request.AbsoluteUrl(或类似的)属性,然后假设我配置的路由永远不会改变(这是我要避免的假设,否则我会采用这种方式),并推断正在调用的控制器和操作的名称。
但是,我正在寻找更可靠的方法。因此下面的(2)。
2) 我假设在实例化正确的控制器之前,MVC 已经在某个时间或另一个时间为我完成了这项工作。我想知道它在哪里这样做,以便我可以重新使用它的工作。在什么时候我可以获取此信息、拦截请求并在它到达操作之前对其进行处理?
【问题讨论】:
-
创建一个action filter 并覆盖ActionFilterAttribute.OnActionExecuting 方法怎么样?
-
好的,谢谢。有时,我的大脑似乎逃避了显而易见的事情。
标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-routing