MVC 在呈现给用户之前更改响应的最后机会

2024-01-04

我需要在呈现给用户之前更改完整的 html 响应流(使用 html 解析)。 最后一次机会在哪里/什么时候?


恕我直言,在 ASP.NET MVC 环境中更改 HTML 响应的更好方法是使用操作过滤器。 这是用于压缩输出的动作过滤器的示例:

public class CompressFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;

        string acceptEncoding = request.Headers["Accept-Encoding"];

        if (string.IsNullOrEmpty(acceptEncoding)) return;

        acceptEncoding = acceptEncoding.ToUpperInvariant();

        HttpResponseBase response = filterContext.HttpContext.Response;

        if (acceptEncoding.Contains("GZIP"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
        else if (acceptEncoding.Contains("DEFLATE"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
}

您可以在操作方法中像这样使用它:

    [CompressFilter]
    // Minifies, compresses JavaScript files and stores the response in client (browser) cache for a day
    public JavaScriptResult GetJavaScript(string jsPath)

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC 在呈现给用户之前更改响应的最后机会 的相关文章

随机推荐

  • 用 C# 编写“原始”HTTP 客户端

    我正在尝试用 C 编写一个 原始 HTTP 客户端 你可能会问为什么 我的目标是在 J2ME 中实现 HTTP 客户端 只能执行 GET 和有限的 POST 但首先我需要更好地理解 HTTP 协议 因此进行 C 尝试 我的第一次尝试失败了
  • 选择数据库后进行身份验证

    我的 MongoDB 服务器中有 3 个数据库 我正在使用 pymongo 用 Python3 编写一些脚本 我想使用最新的版本和做法 一旦我打开客户端并选择数据库 pymongo MongoClient mydatabase authen
  • 具有标题和项模板列的 Windows 8 XAML ListView 应具有相同的动态宽度

    我正在使用带有 Itemtemplate 和 Headertemplate 的 Listview 两个模板都包含 6 列 如果我为模板设置固定的列宽 一切都可以 如图一所示 但我想将项目的宽度设置为 自动 但后来我得到图 2 这要怎么处理呢
  • 创建组件实例并传递给另一个组件渲染为 [object HTMLelement]

    从我的组件 例如 Component 中 我尝试实例化一个 Angular 组件 例如 CustomComponent 设置一些属性 然后将其发送到表格 例如 CustomTable 进行渲染 但我不断收到 object HTMLEleme
  • Minio:使用 docker-compose 添加公共存储桶

    下面是我的 docker compose 中的一个服务 minio image minio minio edge environment MINIO ACCESS KEY minio123 MINIO SECRET KEY minio123
  • SQLite 中的“如果、那么、否则”

    在不使用自定义函数的情况下 SQLite 是否可以执行以下操作 我有两个表 它们通过通用 ID 号链接 在第二个表中 有两个变量 我想要做的是能够返回一个结果列表 其中包括 行 id 如果这两个变量的所有实例 可能有两个以上 均为 NULL
  • 如何中止 Python 脚本的执行? [复制]

    这个问题在这里已经有答案了 我有一个简单的 Python 脚本 如果满足条件 我想停止执行该脚本 例如 done True if done quit stop exit else do other stuff 本质上 我正在寻找与函数体中的
  • Google Books API 403 访问未配置

    我正在尝试联系 Google Books API 并执行书名搜索 这仅需要公共 API 密钥 不需要 OAUTH2 我得到的只是以下错误 error errors domain usageLimits reason accessNotCon
  • 替换 Android 中 Uri.Builder 中的查询参数?

    我传递一个 Uri Builder 对象作为子类的机制 以便在执行之前将任何必要的参数填充到 Uri 中Android 问题是 基类添加的参数之一使用builder appendQueryParameter q searchPhrase 需
  • 编辑注册表中的环境变量

    我想从注册表中读取所有环境变量 并在 Visual Studio 2010 Express 中使用 C 为其设置一个新值 因此我读取了本地机器的子项 SYSTEM CurrentControlSet Control Session Mana
  • 为通用递归程序生成递归树的程序

    通常 在解决递归或动态编程问题时 我发现自己会绘制递归树来帮助简化问题 然而 对于一些复杂的问题 我可以找到解决方案 但不知道如何绘制树 到目前为止我所尝试的是打印出调用函数及其参数 这在一些示例中证明是有用的 然而 我在这个答案中看到了m
  • C++11:为什么 std::condition_variable 使用 std::unique_lock?

    我对角色有点困惑std unique lock当与std condition variable 据我了解文档 http en cppreference com w cpp thread unique lock std unique lock
  • 固定标题网格视图 ASP.NET

    我浏览了很多固定标题网格视图的示例 并使用 div 和 java 脚本尝试了一些选项 我没有从示例中工作 这里有什么我想念的吗 CSS gridViewHeader background color Navy color blue font
  • 在 Xcode 中构建 iOS 应用程序时出错:Sandbox: rsync.samba (13105) Deny(1) file-write-create,Flutter 无法写入文件

    在 Xcode 上构建 iOS 应用程序时 我遇到了这 2 个错误 我尝试在 Visual Studio 代码上构建 iOS 但也遇到了相同的错误 操作系统 macOS 14 0 beta 处理器M1 Pro 降级操作系统可以解决这个问题吗
  • 动态转换不适用于非多态基类?

    这里第二个演员给出了一个错误说 cast cc 35 35 error cannot dynamic cast base of type class CBase to type class CDerived source type is n
  • 复选框增加和减少问题

    现在我遇到一个问题 如果第一个复选框编号增加 然后单击第二个复选框 那么第一个复选框值将显示 1 它应该是因为我增加了 4 或 5 但通过选中另一个复选框 它将自动显示 1 我的 Js 代码 在此代码中 我单击复选框 然后增加数字 但我也希
  • 应用程序代码中的 try-catch 块无法捕获的异常

    MSDN 指出StackOverflowException 无法被 try catch 块捕获 http msdn microsoft com en en library system stackoverflowexception aspx
  • A* 用于寻找最短路径并避开障碍物

    我必须获得二维两点之间的 最短 最佳 距离 我必须避免可能连接在一起的线条形状 关于如何表示我可以行驶的节点有什么建议吗 我曾想过制作一个网格 但这听起来不太准确或优雅 如果一条线的任何点位于正方形内 该节点是正方形的中心 我会认为该节点不
  • 使用 BOOST_FUSION_ADAPT_ADT 增强类的融合序列化

    我正在尝试使用 boost fusion 为类获取序列化模块 我已将我的类转换为 boost fusion 序列 此示例取自 Michael Caisse 在 boostcon 13 上演讲的幻灯片 https github com boo
  • MVC 在呈现给用户之前更改响应的最后机会

    我需要在呈现给用户之前更改完整的 html 响应流 使用 html 解析 最后一次机会在哪里 什么时候 恕我直言 在 ASP NET MVC 环境中更改 HTML 响应的更好方法是使用操作过滤器 这是用于压缩输出的动作过滤器的示例 publ