Capturando a saída HTML com um filtro de ação do controlador

Coloquei o seguinte filtro em uma ação para capturar a saída HTML, convertê-la em uma sequência, executar algumas operações para modificar a sequência e retornar um ContentResult com a nova sequência. Infelizmente, continuo terminando com uma string vazia.

private class UpdateFilter : ActionFilterAttribute
    {
        private Stream stream;

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            stream = filterContext.HttpContext.Response.Filter;
            stream = new MemoryStream();
            filterContext.HttpContext.Response.Filter = stream;
        }

        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            StreamReader responsereader = new StreamReader(filterContext.HttpContext.Response.Filter);  //empty stream? why?
            responsereader.BaseStream.Position = 0;
            string response = responsereader.ReadToEnd();
            ContentResult contres = new ContentResult();
            contres.Content = response;
            filterContext.Result = contres;
        }
    }

Eu fixei que StreamReader (stream) .ReadToEnd () retorna uma string vazia, mas não consigo descobrir o porquê.

Alguma idéia de como consertar iss

EDITA: Alterei o OnActionExecuted para OnResultExecuted e agora ele é chamado após a exibição da exibição, mas o fluxo ainda está vazio!

questionAnswers(4)

yourAnswerToTheQuestion