ASP.NET MVC 3, filtros de acción e inyección de dependencia de Autofac

EnASP.NET MVC 2 Yo tengo unActionFilterAttribute llamado[Transaction] que inicia una transacción de NHibernate antes de ejecutar la acción y la confirma o revierte después, dependiendo de si se produjo o no una excepción. losISession instancia esHttpRequestScoped() e inyectado porAutofac. Se ve así y funciona muy bien:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public sealed class TransactionAttribute : ActionFilterAttribute
{
    private ITransaction transaction;

    public TransactionAttribute()
    {
        this.Order = 0;
    }

    public ISession Session
    {
        get;
        set;
    }

    public override void OnActionExecuted(
        ActionExecutedContext filterContext)
    {
        if (this.Session != null && this.transaction != null)
        {
            try
            {
                if (this.transaction.IsActive)
                {
                    if (filterContext.Exception == null)
                    {
                        this.transaction.Commit();
                    }
                    else
                    {
                        this.transaction.Rollback();
                    }
                }
            }
            finally
            {
                this.transaction.Dispose();
                this.transaction = null;
            }
        }
    }

    public override void OnActionExecuting(
        ActionExecutingContext filterContext)
    {
        if (this.Session != null)
        {
            this.transaction = this.Session.BeginTransaction();
        }
    }
}

Fantástico.Parece ser un patrón común.

En elASP.NET MVC 3 notas, veo esta pequeña propaganda bajo "Cambios de ruptura" (énfasis mío):

En versiones anteriores de ASP.NET MVC,Se crearon filtros de acción por solicitud excepto en algunos casos. Este comportamiento nunca fue un comportamiento garantizado, sino simplemente un detalle de implementación y el contrato para los filtros era considerarlos apátridas. En ASP.NET MVC 3, los filtros sonalmacenado en caché de forma más agresiva. Por lo tanto, cualquier filtro de acción personalizado que almacene incorrectamente el estado de la instancia podría estar roto.

Ups

¿Esto significa que tengo una manguera si actualizo a MVC 3?Si los filtros de acción ya no se instancian por solicitud, ¿cómo obtendremos dependencias con ámbito de solicitud en nuestros filtros de acción?

Gracias por cualquier idea.

Respuestas a la pregunta(2)

Su respuesta a la pregunta