Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何基于会话变量缓存HttpHandler_C#_Asp.net_.net_Caching - Fatal编程技术网

C# 如何基于会话变量缓存HttpHandler

C# 如何基于会话变量缓存HttpHandler,c#,asp.net,.net,caching,C#,Asp.net,.net,Caching,我有一个网站,它有一个用于生成动态样式表的处理程序(实现IHttpHandler)。它通过从会话中获取一个HTML颜色代码(基于用户所属的组织)并使用一些代码(无点)在不同的地方生成一个带有该颜色集的样式表来实现这一点 考虑到模板很少会改变,我认为缓存是有序的,但我当然需要使缓存依赖于我从会话中得到的颜色 是否有一种简单的内置方法可以基于此值进行输出缓存?我知道我可以基于querystring和其他各种方法来实现,但不确定是否可以在这样的会话值上实现。当然,另一种选择是创建我自己的缓存代码,但我

我有一个网站,它有一个用于生成动态样式表的处理程序(实现
IHttpHandler
)。它通过从会话中获取一个HTML颜色代码(基于用户所属的组织)并使用一些代码(无点)在不同的地方生成一个带有该颜色集的样式表来实现这一点

考虑到模板很少会改变,我认为缓存是有序的,但我当然需要使缓存依赖于我从会话中得到的颜色


是否有一种简单的内置方法可以基于此值进行输出缓存?我知道我可以基于querystring和其他各种方法来实现,但不确定是否可以在这样的会话值上实现。当然,另一种选择是创建我自己的缓存代码,但我不想重新发明轮子…

您可以为输出缓存创建一个缓存键,其中包含颜色作为键的一部分。。。“true”输出缓存是在处理程序之前在内核级别完成的,因此在处理程序级别实现一种根据请求改变密钥的方法可能会很棘手


为什么不使用一个静态的,正确的线程安全(通过锁)字典。。。其中键是颜色,值是CSS内容?静态对象将一直存在,直到应用程序域终止。您可以在处理程序本身中使用HttpHandler的静态字段成员进行缓存。然后,破坏所述缓存就变得像清除或重新初始化静态字段成员引用一样简单。

是的,考虑一下您所说的输出缓存在命中处理程序之前发生的情况,您无法从处理程序本身执行这项操作是有道理的。我只能希望……:)在.NET4.0中有很多方法可以做到这一点-实现自定义输出缓存提供程序。。。但与静态字典相比,这是多余的。是的,这绝对是多余的,但如果我将来需要它的话,我会考虑一个有趣的想法。