Sharepoint 2010 - sppersiststedoobject . update()在不使用isreset
本文关键字:isreset 2010 sppersiststedoobject update Sharepoint | 更新日期: 2023-09-27 18:04:50
使用Sharepoint 2010,我有一个类继承了sppersisteddobject的各种设置:
[Serializable] class Settings : SPPersistedObject
{
[Persisted] private string setting1; // getters and setters etc. exist for each field
...
}
这些设置(属性)应该可以从应用程序代码全局访问。每当其中一个或多个值发生变化时,Update()方法被调用,以便代码的其他部分(即其他aspx页面)可以读取正确的最新值。
只要我只访问更新它们的相同应用程序中的属性,这就可以正常工作,例如:http://abc:5100/.../test.aspx
updates Settings。seting1、呼叫Update();
和其他:5100页现在将在其代码中看到新值。
然而-这是我的问题-当我读设置。例如,从http://abc:26233 /.../temp.aspx
设置1属性,则检索旧值(更新前)而不是新值。这让我相信属性是从某种内存副本中读取的,而不是从更新后的存储中读取的。只有当我事先手动使用'iisreset/restart'时,才能检索到新值,但这是不可取的。
如果有人对如何更新/读取属性有任何想法,我会非常感激,以便更改反映在整个农场,即值是从一个共同的永久存储读取。
w128:
解决方案是在您的类上使用SPPersistedObject.Clone()
方法,例如(不是实际的代码,但说明了这一点):
Settings s = (Settings)SettingsObj.Clone();
return s.Setting1; // returns updated value