如何在 ASP.NET MVC 中基于每个用户删除输出缓存?

2023-12-26

我在用着VaryByCustom在每个浏览器和每个用户的基础上创建输出缓存:

[OutputCache(Duration = 6000, VaryByParam = "*", VaryByCustom="browser;userName")]

(我已经重写了GetVaryByCustomString()使这项工作成功。)

如果可能的话,我需要能够删除单个用户的输出缓存,而不使不同用户的输出缓存无效。我读过关于HttpResponse.RemoveOutputCacheItem(),但这可以通过根据路径删除输出缓存来实现。有没有办法根据 VaryByCustom 字符串来做到这一点?


您可以利用VaryByCustom财产在[OutputCache]通过覆盖HttpApplication.GetVaryByCustomString并检查HttpContext.Current.User.IsAuthenticated.

这是我将在 Global.asax.cs 文件中创建的内容:

public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        if (custom == "UserName")
        {
            if (context.Request.IsAuthenticated)
            {
                return context.User.Identity.Name;
            }
            return null;
        }

        return base.GetVaryByCustomString(context, custom);
    }

然后在 OutputCache 属性中使用它:

[OutputCache(Duration = 10, VaryByParam = "none", VaryByCustom = "UserName")]
public ActionResult Profiles()
{
    //...
}

但请注意,在这种情况下用户名应该是不可变的!

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

如何在 ASP.NET MVC 中基于每个用户删除输出缓存? 的相关文章

  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N

随机推荐

  • Chromecast – 从 Chrome 连接到其他设备会话

    Context 当从谷歌浏览器并使用会话监听器 https developers google com cast docs reference chrome chrome cast ApiConfig sessionListener可以加入
  • 使用pgcrypto验证password_hash生成的密码

    我将密码哈希值存储在使用以下命令生成的 Postgresql 数据库中 password hash password PASSWORD DEFAULT 现在我还希望能够使用 Postgresql 和 pgcrypto 验证用户密码 但是 p
  • C 中的“结构命名空间”有技术原因吗?

    在 C 中 大多数声明结构的代码都将遵循以下模式 struct forward declaration typedef struct T T struct definition typedef struct T etc T 这种情况非常普遍
  • 如何在 slurm 作业期间监控资源?

    我正在我们的大学集群 普通用户 无管理员权限 上运行作业 该集群使用 SLURM 调度系统 我有兴趣绘制随时间推移 即作业运行时 的 CPU 和内存使用情况 我知道关于sacct and sstat我正在考虑将这些命令包含在我的提交脚本中
  • 如何确保幻灯片选项卡在 html 中显示 3 个选项卡

    我在手机上有一个应用程序 手机屏幕较小 无法同时显示全部 7 个选项卡 因此 它将显示为两行不整齐的选项卡 我希望它一次显示 3 个选项卡 例如 在幻灯片 2 中 它将在左侧显示幻灯片 1 的选项卡 在中间显示幻灯片 2 在右侧显示幻灯片
  • 欧芹自定义错误消息不起作用

    我有以下输入字段
  • 一种膨胀/收缩(偏移、缓冲)折线的算法

    相关问题 一种用于膨胀 收缩 偏移 缓冲 多边形的算法 https stackoverflow com questions 1109536 an algorithm for inflating deflating offsetting bu
  • 多维数组上的 SetLength

    我想知道如何在 Pascal 中设置多维数组的长度 创建动态多维数组 喜欢SetLength arr len 对于一维数组来说 我找不到答案 var arr array of array of real SetLength arr 10 2
  • 如何合并空字符串和 NULL 值?

    我正在尝试制作最快的 COALESCE 它接受两个或多个参数 并返回第一个非空和非空 值 我正在使用这个 CREATE OR REPLACE FUNCTION coalescenonempty VARIADIC in ordered act
  • Ionic 2 - RC2.0,上传文件(传输)的插件无法工作

    在过去的 2 天里 我一直在努力让我的应用程序将手机摄像头拍摄的图像上传到 PHP 服务器上 服务器上的代码工作得很好 但是 FILES变量为空 我的问题和这里描述的类似 也没有解决方案更新到 ionic 2 RC0 后 Cordova 文
  • 关于索引器和/或泛型的问题

    如何知道一个对象是否实现了索引器 我需要共享 DataRow 和 IDataReader 的逻辑 但它们不共享任何接口 我也尝试过使用泛型 但不知道应该对 where 子句施加什么限制 public class Indexer myObje
  • backbone.js - 从点击事件访问模型

    我有一个包含 CellModels 的 CellCollection 的 BoardView 我从数据库中获取集合 然后创建 CellView 这一切都很顺利 直到我尝试通过 BoardView 上的单击事件访问 CellModel 我根本
  • @Autowired 字段获取 null

    我的类类别有这个属性编辑器 我试图将其自动连接到服务 问题是服务不断获得空值 另外 这似乎是孤立的 或者至少我是这么认为的 因为我在控制器上自动连接了同一类的字段 所以我不知道发生了什么 我已经遇到了这样的错误 但是在那个时候根本就不管用
  • 在 oracle 上的存储过程中返回单行

    我正在使用 php 和 oracle 我如何返回存储过程中的一行以像选择查询一样使用 以便我可以将它们读入 php ini 例如 declare or replace procedure select row bookingid in in
  • 等到 UITableView 完成 reloadData [重复]

    这个问题在这里已经有答案了 可能的重复 当 UITableView 完成请求数据时收到通知吗 https stackoverflow com questions 1483581 get notified when uitableview h
  • 我想让输入字段具有唯一值

    假设页面 A 有 5 个输入字段
  • 在 JBoss 7.1.1 中使用 DEBUG 级别进行日志记录

    目标 我的应用程序应该包含错误和调试级别的消息 日志记录级别必须通过 JBoss 管理控制台设置 切换 日志记录应写入标准 JBoss 日志文件和服务器控制台 我尝试使用 java util logging Logger 但该记录器没有必要
  • Perl - 附加到文件的最后一行(同一行)

    有人可以让我知道如何根据当前值附加输出文件的最后一个条目吗 例如 我正在生成一个输出 txt文件 说 a b c d 10 通过一些处理我得到了价值20现在我希望分配该值并与之前的设置对齐 使其 a b c d 10 20 假设最后一行没有
  • 如何修复我在 AWS 中上传的 Flask 应用程序中的 502 错误?

    我在使用 Elastic beanstalk 将 Flask 应用程序上传到 AWS 服务器时遇到问题 上传代码后 环境中出现 502 bad gateway 错误 这是我花了几个小时解决这个问题并使用 Flask Eb 一年多后的 2 美
  • 如何在 ASP.NET MVC 中基于每个用户删除输出缓存?

    我在用着VaryByCustom在每个浏览器和每个用户的基础上创建输出缓存 OutputCache Duration 6000 VaryByParam VaryByCustom browser userName 我已经重写了GetVaryB