0

背景:

使用 HttpModule 创建带有 NH3 的 Web 应用程序的启动,以管理事务和会话的创建/提交/回滚。在发生错误的情况下,我想向用户返回一条简单的消息,但回滚事务。挂钩 context.Error 事件,允许在异常时轻松回滚,但是,由于正在捕获异常,因此永远不会调用它,向用户显示友好的消息。

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

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

谢谢。

4

1 回答 1

0

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

是的,这几乎就是 WebSessionContext 的作用。

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

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

ISession.Transaction.WasCommittedISession.ITransaction.WasRolledback告诉您事务是否已回滚/提交。如果它没有回滚并且没有提交,你可以在你的 HttpModule 中提交它。

于 2011-08-15T03:59:32.143 回答