我已经实施Session per request模式来管理nhibernate会话。ASP.NET C#+ Nhibernate HTTP模块(每个请求的会话) - 限制请求类型
因为它是一个httpmodule它运行每个请求,无论是JPG或PNG。如果请求是通过MVC框架完成的,是否有办法让模块创建一个会话? I.E不包括png/jpg等?
我已经实施Session per request模式来管理nhibernate会话。ASP.NET C#+ Nhibernate HTTP模块(每个请求的会话) - 限制请求类型
因为它是一个httpmodule它运行每个请求,无论是JPG或PNG。如果请求是通过MVC框架完成的,是否有办法让模块创建一个会话? I.E不包括png/jpg等?
Mathieu是正确的,但是对于ASP.NET MVC项目来说,在ActionFilter类中打开会话是一种很好的做法。您可以在GlobalFilterCollection中注册它,如果您希望它为每个行动。看看这个blog post(也来自Ayende,但是具体的MVC)。
不要打扰,创建一个新的会话只是新的一些对象。来自Ayende的完整解释:http://ayende.com/blog/4123/what-is-the-cost-of-opening-a-session
ayende post @Vasile指出取代这一点。 – Rippo
+1这是最确定的最好的方法,它使我在使用http模块的页面请求期间打开/关闭会话超过20次。但是,您也可能需要捕获未处理的异常并进行回滚。 – Rippo