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!