sharepoint - static全局变量 - php全局变量




在SharePoint网站中存储站点级全局变量的正确方法是什么? (2)

有一件事推动了我对SharePoint2007的坚持,显然无法具有专门适用于网站或网站集本身而不是内容的可定义设置。 我的意思是,你有一些预定义的设置,如网站标志,网站名称和其他各种各样的东西,但似乎没有任何地方可以添加新的设置。

我正在处理的应用程序需要能够创建多种类型的“项目网站集”,这些网站集都遵循基本模板,但是具有特定于该网站集的其他一些设置,而且这些设置仅适用于该网站集。 除标准网站名称外,我们还需要定义项目编号,项目名称和客户名称。 考虑到我们一些客户的要求,我们也达到了必须具有可配置的设置,以改变一些工作流程的工作方式,比如文件是用字母还是数字来标记。

我们目前的解决方案,我很犹豫,已经将XML文件存储在SharePoint服务器上。 该文件包含每个网站集的一个节点,由根网站的URL标识。 节点内部是需要为该网站集定义的所有元素。 当我们需要它们时,我们必须每次访问XML文件(它总是需要SPSecurity.RunWithElevatedPrivileges访问服务器上的文件),以便加载它并检索数据。 有很多自动化的流程将不得不这样做,而且我们对这种方法的稳定性犹豫不决,当我们到达数以百计的成千上万的文件运行成千上万的工作流程,都希望访问这个文件的网站。 也许他们是没有根据的担心,但是我宁愿担心风险,一切都会在几年内破裂。

我正在查看SPWeb对象,发现了AllProperties哈希表。 它看起来只是那种可能起作用的东西,但我不知道要修改它是多么的安全。 我通读了MSDN和WSS SDK,但没有发现在AllProperties添加全新的属性。 使用AllProperties这种事情是安全的吗? 还是还有另一个功能,我错过了,它可以处理在网站集或站点范围的全局变量的概念?



推荐的方法是通过SPFarm的.Properties,SPWeb.RootWeb(用于网站集),SPWeb,SPList等(取决于你需要的范围)使用PropertyBag(键/值对)。

MSDN - 管理SharePoint应用程序的自定义配置选项

有一个生产就绪代码作为其中的一部分

MSDN - SharePoint指导库

请参阅分层配置管理器

这使您可以通过编程访问来读取/写入这些值。 如果你想不使用指导库,那么你会使用类似下面的代码。

SPWeb web = SPContext.Current.Web;
if (web.Properties.ContainsKey("MyProperty"))
   string myProperty = web.Properties["MyProperty"];

如果您希望UI允许管理员轻松设置值,请使用SharePoint Designer (urghhhh!)或SharePoint Property Bag Settings