com exceção do Contrutor os métodos OnActionExecuted e OnActionExecuting do filtro TransactionFilter não são chamados antes de depois das chamadas aos controllers. Eu tenho que registrá-lo em alguma classe de inicialização?
namespace LojaWeb.Filters
{
public class TransactionFilter : ActionFilterAttribute
{
ISession session;
public TransactionFilter(ISession session)
{
this.session = session;
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Exception == null)
{
session.Transaction.Commit();
}
else
{
session.Transaction.Rollback();
}
session.Close();
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
session.BeginTransaction();
}
}
}
Classe NinjectWebCommon
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ISession>().ToMethod(x => NHibernateHelper.AbreSession()).InRequestScope();
int ordemExecucao = 1;
kernel.BindFilter<TransactionFilter>(FilterScope.Global, ordemExecucao);
}