背景:
使用HttpModule使用NH3创建Web应用程序的启动,以管理事务和会话的创建/提交/回滚。 在发生错误的情况下,我想将简单消息返回给用户,但回滚事务。 挂钩context.Error事件,允许在异常时轻松回滚,但是,由于异常被捕获,所以永远不会调用它,向用户显示友好消息。
由于上面的问题,我将创建一个自定义工作单元场景,并将其存储在请求的Http上下文中。如果发生错误,请设置RollbackRequired标志,并让工作单元基于此执行回滚。 存储在HttpContext中的会话中 - 这与使用CurrentSessionContext相同吗?
如果有人有其他想法我会很棒。
感谢。
答案 0 :(得分:0)
在HttpContext中存储会话 - 这与使用CurrentSessionContext相同吗?
是的,它几乎就是WebSessionContext的功能。
如果有人有其他想法我会很棒。
如果您正在捕捉异常,为什么不将它回滚?
ISession.Transaction.WasCommitted
和ISession.ITransaction.WasRolledback
会告诉您事务是否已回滚/已提交。如果它没有回滚而没有提交,你可以在你的HttpModule中提交它。