Теперь я должен просмотреть свой код MVC 3 и посмотреть, нет ли у меня подобных проблем!

P.NET MVC 2 у меня есть называетсяActionFilterAttribute которая запускает транзакцию NHibernate перед выполнением действия, а затем фиксирует или откатывает ее в зависимости от того, было ли выброшено исключение.[Transaction] примерISession и вводитсяHttpRequestScoped()Autofac, Это выглядит так и прекрасно работает:Фантастика.

[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();
        }
    }
}

Кажется, это общая картина.в

ASP.NET MVC 3 примечания, я вижу эту маленькую рекламу в разделе "Breaking Changes" (выделение мое):В предыдущих версиях ASP.NET MVC,

Фильтры действий были созданы для каждого запроса за исключением нескольких случаев. Такое поведение никогда не было гарантированным поведением, а являлось лишь деталью реализации, и контракт на фильтры заключался в том, чтобы считать их не имеющими состояния. В ASP.NET MVC 3 фильтрыкешируется более агрессивно, Поэтому любые фильтры пользовательских действий, которые неправильно хранят состояние экземпляра, могут быть повреждены.К сожалению.

Означает ли это, что я нахожусь под ногами, если я обновлюсь до MVC 3?

Если фильтры действий больше не создаются для каждого запроса, как мы получим зависимости в области запросов в наших фильтрах действий?Спасибо за понимание.

Я только что задал похожий вопрос на форумах Google. Вот ссылка

Ответы на вопрос(1)

Ваш ответ на вопрос