Sharepoint 2010 - SPPersistedObject.Update () не обновляет свойства разных приложений без iisreset - PullRequest
1 голос
/ 09 августа 2011

Работая с Sharepoint 2010, у меня есть класс, который наследует SPPersistedObject с различными настройками:

[Serializable] class Settings : SPPersistedObject
{
    [Persisted] private string setting1; // getters and setters etc. exist for each field
    ...
}

Предполагается, что эти настройки (свойства) доступны глобально из кода приложения. Каждый раз, когда изменяется значение одного или нескольких из них, вызывается метод Update (), так что другие части кода (то есть другие страницы aspx) могут читать правильное, актуальное значение.

Это работает нормально, пока я обращаюсь к свойствам только в том же приложении, которое их обновило, например: http://abc:5100/.../test.aspx обновляет Settings.Setting1, вызывает Update(); и другие: 5100 страниц теперь увидят новое значение в своих код.

Однако - и это моя проблема - когда я читаю свойство Settings.Setting1 из, скажем, http://abc:26233 /.../temp.aspx, вместо нового возвращается старое значение (предварительное обновление). Это наводит меня на мысль, что свойство читается из какой-то копии в памяти, а не из обновленного хранилища. Новое значение извлекается только в том случае, если я заранее использую 'iisreset / restart' , но это нежелательно.

Я был бы очень признателен, если бы кто-нибудь имел представление о том, как обновить / прочитать свойства, чтобы изменение отражалось во всей ферме, т. Е. Значение считывалось из общего постоянного хранилища.

1 Ответ

1 голос
/ 05 июля 2012

Решение найдено w128 :

Решение заключается в использовании метода SPPersistedObject.Clone() в вашем классе, например (не фактический код, но иллюстрирует смысл):

Settings s = (Settings)SettingsObj.Clone();
return s.Setting1; // returns updated value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...