NHibernate 3、HttpModule和错误

NHibernate 3、HttpModule和错误,nhibernate,httpmodule,httpcontext,isession,Nhibernate,Httpmodule,Httpcontext,Isession,背景: 使用HttpModule使用NH3创建web应用程序的启动,以管理事务和会话的创建/提交/回滚。 在发生错误的场景中,我希望向用户返回一条简单的消息,但回滚事务。 挂接到context.Error事件,允许在异常时轻松回滚,但是,由于捕获了异常,因此将永远不会调用该事件,从而向用户显示友好消息 由于上述问题,我将创建一个自定义工作单元场景,并将其存储在请求的Http上下文中。如果发生错误,请设置RollbackRequired标志,并让工作单元基于此执行回滚。 在HttpContext的

背景:

使用HttpModule使用NH3创建web应用程序的启动,以管理事务和会话的创建/提交/回滚。 在发生错误的场景中,我希望向用户返回一条简单的消息,但回滚事务。 挂接到context.Error事件,允许在异常时轻松回滚,但是,由于捕获了异常,因此将永远不会调用该事件,从而向用户显示友好消息

由于上述问题,我将创建一个自定义工作单元场景,并将其存储在请求的Http上下文中。如果发生错误,请设置RollbackRequired标志,并让工作单元基于此执行回滚。 在HttpContext的会话中存储-这与使用CurrentSessionContext相同吗

如果有人有其他想法,我会很好

谢谢

在HttpContext的会话中存储-这与使用CurrentSessionContext相同吗

是的,这和WebSessionContext差不多

如果有人有其他想法,我会很好

如果您正在捕获异常,为什么不将其回滚


ISession.Transaction.WasCommitted
ISession.itTransaction.WasRolledback
提供事务是否已回滚/提交的指示。如果未回滚且未提交,则可以在HttpModule中提交。

感谢您的回复。我不想直接在服务或层中回滚它。我突然想到,最好还是把它留给HttpModule/UoW实现。