Wenn Sie dieses Verhalten möchten, können Sie es erhalten, indem Sie ControllerActionInvoker erweitern. Ich glaube, man kann so etwas tun:
// 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();
}
}
}
werden Sie dann erhalten müssen, um Ihre ControllerActionInvoker an den Controller hinzugefügt, die Sie tun können, eine benutzerdefinierte Controller Factory mit (es ist wahrscheinlich ein einfacher Weg, aber ich bin nicht vertraut).
Ich denke, das OP fragt, ob sein benutzerdefiniertes ViewResult IDisposable implementieren kann. – DSO
... und wenn dies der Fall ist, wird das MVC-Framework Dispose aufrufen. – DSO
Dies ist ein schwerwiegender Fehler in MVC! Ich hoffe, sie kümmern sich darum. Zum Beispiel wird FileStreamResult den an ihn übergebenen Stream nicht entsorgen! – erikkallen