我们正在通过四个区域托管的Web应用程序构建一个包含数百个网站集的大型SharePoint 2007安装。我们有大约12,000名用户,在全球范围内或多或少均匀分布,每个用户可以访问许多网站集 - 包括他们的“家庭”区域服务器和其他区域服务器。
我的问题是:我们如何允许每个用户设置一次他/她的时区,但允许时区与每个网站集同步?此外,如果用户从一个时区移动到另一个时区,我们如何允许他/她更改时区并在所有网站集中应用更改?
我们考虑过以下事项:
使用计划的进程通过SharePoint API更新时区记录。笨拙和缓慢 - 我们希望更改能够更快地生效,我们的维护窗口已经非常小了。
在包含时区信息的表上放置一个触发器,并使用.NET存储过程通过SharePoint API进行更新。绝对违背SP最佳实践。
创建一个工作流程,允许用户设置他/她的居住地时区,然后遍历网站集以设置适当的时区信息。这似乎适用于现有网站集,但新网站集无法获取设置。
将用户的时区存储在Cookie中;让主页获取cookie并更新当前网站集的时区设置。可以工作,但是我们的用户可能会使用多台机器,而且,我们宁愿不会在每次加载页面时都有这样做的开销。
所以底线是我们不确定最适合我们的选择。任何想法都将不胜感激。
答案 0 :(得分:1)
我建议建立你的cookie理念:
SPContext.Current.Web.CurrentUser
中设置的时区进行比较,并相应更新。由于SPUser
对象已经存在,并且您可以使用cookie来避免不断查找配置文件值,因此性能影响应该可以忽略不计。您可以将此逻辑添加到母版页或使用委托控件插入轻量级控件(我的偏好)。