2

我正在关注 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();
        }
4

0 回答 0