Если вы хотите это поведение, вы можете получить его, расширив ControllerActionInvoker. Я считаю, что вы можете сделать что-то вроде:
// warning: untested
public class DisposableControllerActionInvoker : ContollerActionInvoker
{
public override void InvokeActionResult(
ControllerContext controllerContext, ActionResult actionResult)
{
base.InvokeActionResult(controllerContext, actionResult);
var disposable = actionResult as IDisposable;
if(disposable != null)
{
disposable.Dispose();
}
}
}
Затем вам нужно будет добавить свой ControllerActionInvoker в контроллер, что можно сделать с помощью фабрики пользовательских контроллеров (возможно, есть более простой способ, но я не знаком).