在创建控制器之前的ASP .net MVC预处理请求

时间:2011-06-08 16:05:08

标签: .net asp.net-mvc

我知道控制器应该处理每个动作但是如何在asp .net mvc中预处理某些请求?例如,我的所有控制器都需要很多东西。在每个控制器中对此进行编码并不完全正确,因此我需要在http上下文会话中保存一些数据,以便我可以在每个控制器中访问它。

如果我将对象存储在会话中,我还需要以某种方式正确处理或使其可用于以后在httpcontext会话中使用某些对象?在我的例子中,我使用nhibernate将我的对象映射到数据库,我正在考虑创建一个池来存储我的ISession实例,会话或与我的数据库的连接,并根据需要使它们可用。我不知道它是否可以这样,但这是我提出的最好的主意,而不是每次创建那些ISession。

我对此很陌生,所以我可能会使用很多这些不太好的东西。

1 个答案:

答案 0 :(得分:0)

覆盖MvcHandler类并在那里实现你的逻辑。然后覆盖MvcRouteHandler以提供自定义IHttpHandler实施,而不是默认MvcHandler。如果您查看这些类的源代码并准确了解接收请求的ASP.NET与执行控制器之间发生的情况,这将更容易实现。

另一种选择是创建一个BaseController来处理所有预处理,并从基本控制器派生解决方案中的任何控制器。这可行,但它似乎不适合你试图做的第一个我建议的解决方案。