我正在关注 Steve Smith 关于如何在 ASP.NET Core 中使用过滤器的文章。具体来说,我想在 razor 视图引擎处理后获取 HTML。我创建了一个动作过滤器并按如下方式装饰了我的控制器,但我仍然从流中得到一个空的 html 字符串。我认为这与使用 Result 而不是 Context 有关,但我不确定。这是我的代码:
[AppendToHtmlBodyFilter]
public IActionResult Videos()
{
return View();
}
public void OnResultExecuted(ResultExecutedContext context)
{
Stream originalStream = context.HttpContext.Response.Body;
using (MemoryStream newStream = new MemoryStream())
{
context.HttpContext.Response.Body = newStream;
context.HttpContext.Response.Body = originalStream;
newStream.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(newStream);
var htmlData = reader.ReadToEnd();
}