2009-08-24 36 views
2

我们正在通过四个区域托管的Web应用程序构建包含数百个网站集的大型SharePoint 2007安装。我们有大约12,000个用户,分布在全球各地,每个用户都可以访问很多网站集 - 无论是在他们的“家庭”区域服务器还是其他区域服务器上。如何跨SharePoint网站集同步时区信息?

我的问题是:我们如何允许每个用户设置他/她的时区一次,但允许时区同步到每个网站集?另外,如果用户从一个时区移到另一个时区,我们如何允许他/她更改时区并在所有网站集中应用更改?

我们考虑了以下几点:使用计划的过程通过SharePoint API

  1. 更新时区的记录。笨拙而缓慢 - 我们希望更改能够更快地生效,而且我们的维护窗口已经非常小。

  2. 在包含时区信息的表上放置一个触发器,并使用.NET存储过程通过SharePoint API进行更新。肯定会违背SP最佳实践。

  3. 创建一个工作流,允许用户设置他/她的家乡时区,然后遍历网站集以设置适当的时区信息。这似乎适用于现有的网站集,但新的网站集不会获得设置。

  4. 将用户的时区存储在cookie中;让母版页获取Cookie并更新当前网站集的时区设置。可以工作,但我们的用户可能会使用多台机器,而且,我们宁可不用在每次页面加载时都做这项工作。

所以底线是,我们不知道什么是最好的选择是我们。任何想法将不胜感激。

回答

1

我建议建设Cookie的想法:

  1. 存储用户的时区,在他们的个人资料,并提供更改它的接口。
  2. 在页面加载时,如果时区cookie不存在,请根据用户配置文件值创建一个。
  3. 将cookie值与SPContext.Current.Web.CurrentUser中设置的时区进行比较并进行相应更新。

由于SPUser对象已经存在,并且您可以使用cookie来避免不断查找配置文件值,所以性能影响应该可以忽略不计。您可以将此逻辑添加到母版页,也可以使用代理控制插入轻量级控件(我的偏好)。

+0

谢谢 - 我们会试试看。 – Roger 2009-08-25 15:27:48