Фактический контроллер MVC против filterContext.Controller - PullRequest
1 голос
/ 22 марта 2012

У меня есть абстрактный BaseController, который в основном выглядит следующим образом:

public abstract class BaseController : Controller
{
    public IDisposable Resource { get; protected set; }      

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if(Resource != null)
        {
            Resource.Dispose();
        }

        var baseController = filterContext.Controller as BaseController;
        if (baseController != null && baseController.Resource != null)
        {
            baseController.Resource.Dispose();
        }
    }
}

Внутри события OnActionExecuted, я хочу удалить объект Resource.Достаточно ли выполнить Dispose на Resource?Должен ли я также проверить наличие ресурсов в контроллере от filterContext?

В моем случае в отладчике это один и тот же объект, но всегда ли он один и тот же?Для чего он используется?

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Это один и тот же объект.Свойство Controller может быть полезно в фильтрах действий - они также получают ActionExecutedContext в OnActionExecuted - и вы там не в контроллере.

1 голос
/ 22 марта 2012

Если он все тот же, ваш контроллер будет создан для каждого запроса ( ASP.NET MVC Controller Lifecycle ).Тогда вы можете просто распоряжаться своим ресурсом при утилизации вашего контроллера ( ASP MVC: когда вызывается IController Dispose ()? )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...