C# 使用NHibernate在MVC3中处理异常和回滚

C# 使用NHibernate在MVC3中处理异常和回滚,c#,asp.net-mvc,asp.net-mvc-3,nhibernate,transactions,C#,Asp.net Mvc,Asp.net Mvc 3,Nhibernate,Transactions,我在MVC3中使用了每个操作的事务过滤器,比如Ayende,我想知道其他人是如何处理异常和回滚的 操作筛选器将从filterContext对象了解异常,并将自动回滚事务。但是如果我在操作中处理异常,那么就不会发生这种情况 我曾想过使用HttpContext.Current.Items来隐藏某种事务失败的标志,然后让我的操作过滤器检查它,但这是我更愿意避免的一个难题 有人能给我一些建议吗?提供了这样做的方法。提供了这样做的方法。在控制器上,您可以覆盖OnResultExecuted,以便在安全区域

我在MVC3中使用了每个操作的事务过滤器,比如Ayende,我想知道其他人是如何处理异常和回滚的

操作筛选器将从filterContext对象了解异常,并将自动回滚事务。但是如果我在操作中处理异常,那么就不会发生这种情况

我曾想过使用HttpContext.Current.Items来隐藏某种事务失败的标志,然后让我的操作过滤器检查它,但这是我更愿意避免的一个难题


有人能给我一些建议吗?

提供了这样做的方法。

提供了这样做的方法。

在控制器上,您可以覆盖OnResultExecuted,以便在安全区域处理您的上下文,或者回滚您的事务或任何相关工作单元。

在控制器上,您可以覆盖OnResultExecuted,以便在安全区域处理您的上下文,或者回滚您的事务或任何相关工作单元。

感谢您的回答。如果我真的希望获得底层会话,那不是问题。我只是想知道是否有人有一个解决方案可以让我在不牺牲流量控制的情况下保持过滤器事务管理的无缝性。谢谢您的回答。如果我真的希望获得底层会话,那不是问题。我只是想知道是否有人有一个解决方案可以让我在不牺牲流控制的情况下保持过滤器事务管理的无缝性。谢谢,但是事务创建、回滚和提交都发生在每个操作的事务过滤器上。我只想找到一种方法,在不引发异常或不允许异常未处理的情况下,将操作标记为失败。谢谢,但是事务创建、回滚和提交是在每个操作的事务筛选器上进行的。我只想找到一种方法,在不引发异常或不允许异常未处理的情况下,将操作标记为失败。