Si vous voulez ce comportement, vous pouvez l'obtenir en étendant ControllerActionInvoker. Je crois que vous pouvez faire quelque chose comme:
// 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();
}
}
}
Vous aurez alors besoin d'obtenir votre ControllerActionInvoker ajouté au contrôleur, que vous pouvez faire en utilisant une usine de contrôleur personnalisé (il y a probablement une façon plus simple mais je ne suis pas familier).
Je pense que le PO demande si son ViewResult personnalisé peut implémenter IDisposable. – DSO
... et si c'est le cas, si le framework MVC appellera Dispose sur celui-ci. – DSO
Ceci est une faille sérieuse dans MVC! J'espère qu'ils s'en occupent. Par exemple, FileStreamResult ne disposera pas du flux qui lui est passé! – erikkallen