我知道控制器应该处理每个动作但是如何在asp .net mvc中预处理某些请求?例如,我的所有控制器都需要很多东西。在每个控制器中对此进行编码并不完全正确,因此我需要在http上下文会话中保存一些数据,以便我可以在每个控制器中访问它。
如果我将对象存储在会话中,我还需要以某种方式正确处理或使其可用于以后在httpcontext会话中使用某些对象?在我的例子中,我使用nhibernate将我的对象映射到数据库,我正在考虑创建一个池来存储我的ISession实例,会话或与我的数据库的连接,并根据需要使它们可用。我不知道它是否可以这样,但这是我提出的最好的主意,而不是每次创建那些ISession。
我对此很陌生,所以我可能会使用很多这些不太好的东西。
答案 0 :(得分:0)
覆盖MvcHandler
类并在那里实现你的逻辑。然后覆盖MvcRouteHandler
以提供自定义IHttpHandler
实施,而不是默认MvcHandler
。如果您查看这些类的源代码并准确了解接收请求的ASP.NET与执行控制器之间发生的情况,这将更容易实现。
另一种选择是创建一个BaseController
来处理所有预处理,并从基本控制器派生解决方案中的任何控制器。这可行,但它似乎不适合你试图做的第一个我建议的解决方案。