I\'ve got the following filter in place on an action to capture the HTML output, convert it to a string, do some operations to modify the string, and return a ContentResult
Try rewinding the stream to the beginning by setting Position = 0; before you read it.
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
stream.Position = 0;
string response = new StreamReader(stream).ReadToEnd();
ContentResult contres = new ContentResult();
contres.Content = response;
filterContext.Result = contres;
}