Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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# 使用SharePoint存储会话状态的选项_C#_Sharepoint_Moss_Wss - Fatal编程技术网

C# 使用SharePoint存储会话状态的选项

C# 使用SharePoint存储会话状态的选项,c#,sharepoint,moss,wss,C#,Sharepoint,Moss,Wss,我已经为我们的SharePoint网站编写了一个用户控件,它构建了一个HTML菜单-这已经被注入到母版页中,因此最终在所有使用它的页面上呈现。在生成这个HTML时,会进行一些计算开销非常大的调用,而缓存是保持页面加载快速的逻辑选择。到目前为止,HttpRuntime缓存在这方面工作得非常好 现在,我们正在开发该用户控件的1.1版,一个新的需求已经悄然出现,允许每个用户自定义菜单。这不是问题,除了我不能再盲目地使用HttpRuntime缓存对象——或者至少,如果不预先设置用户id并使其特定于用户,

我已经为我们的SharePoint网站编写了一个用户控件,它构建了一个HTML菜单-这已经被注入到母版页中,因此最终在所有使用它的页面上呈现。在生成这个HTML时,会进行一些计算开销非常大的调用,而缓存是保持页面加载快速的逻辑选择。到目前为止,HttpRuntime缓存在这方面工作得非常好

现在,我们正在开发该用户控件的1.1版,一个新的需求已经悄然出现,允许每个用户自定义菜单。这不是问题,除了我不能再盲目地使用HttpRuntime缓存对象——或者至少,如果不预先设置用户id并使其特定于用户,就不能使用它

理想情况下,我希望能够使用ASP.NET会话集合来存储特定于用户的代码。如果用户不活跃,我当然不需要它挂在缓存中,而且这实际上是特定于会话的数据。我已经查看了几个选项,包括在ViewState中使用它或启用会话管理(默认情况下,它是禁用的)。但我对他们两个都不太满意


所以我的问题是:我应该如何在每个用户的基础上缓存这样的输出?目前,我的最佳选择似乎是将用户id包含在缓存密钥中,并给它一个滑动过期时间。

我在一个相当大的MOSS 2007部署(1000多个用户)上使用ViewState来定制Web部件和页面,我根本没有注意到对部署性能的不利影响


我的建议是使用它。

我不明白为什么您不使用基于每个用户(个人)的内置web部件缓存机制来实现这一点-这正是它的设计目的


值得指出的是,我认为提供的“日终”链接与SPS2003相关,而不是与MOSS2007相关-afaik MOSS与Asp.Net的集成意味着上述问题在MOSS中不是问题。

我认为您可能过于重视启用会话状态对性能的影响。不要依赖于一种观点来描述会话的使用,你应该自己测试它的性能来衡量它对你特定站点的影响。在这个链接的示例中,他们说“如果有997个站点不需要会话,为什么要在您只需要3个站点上启用会话?”。好消息,除非你没有在某些页面上显示菜单,否则你需要在每一页上显示菜单。亲自测试并确定影响;它应该是最小的。@Nissan Fan:你应该回答这个问题。我不是在开发web部件-这是一个用户控件,放在CONTROLTEMPLATES文件夹中。接受这个答案,因为它最接近Nissan Fan留下的评论,并且声明了类似的内容。