这个有可能。和对象都有一个所谓的“财产袋” SPWebApplication
。SPWeb
这个属性包可以通过Properties
和AllProperties
分别在提到的对象中访问。SPWebApplication
是一个SPPersistedObject
它继承属性包的地方。
您可以通过代码(以及通过 SPWeb 对象的 SharePoint Designer)将值存储在此属性包中。属性包应该只能由系统帐户访问,因此任何访问属性包的代码都应该被一个SPSecurity.RunWithElevatedPrivileges
块包围:
SPSecurity.RunWithElevatedPrivileges(delegate {
// value can be any object,
// but I recommend sticking to primitive types like string, int etc. only
SPContext.Current.Site.RootWeb.Properties[key] = value;
SPContext.Current.Site.RootWeb.AllProperties[key] = value;
SPContext.Current.Site.RootWeb.Update();
SPContext.Current.Site.RootWeb.Properties.Update();
});
SPWeb 对象同时具有 aProperties 和 AllProperties 属性。如您所见,我更新了两个属性包,您可以在这篇关于属性包的更深入的文章中了解原因。
附言
为了完整起见,我只提到SPWebApplication
这里,你应该坚持使用 SPWeb。我通常将值存储在一个地方,那就是当前 SPSite 的 RootWeb。