Как вы обнаружили, иерархическое хранилище объектов (HOS) хранится в базе данных конфигурации, а не в базе данных контента.
Если вы работаете в контексте сайта, отличного от центрального администратора, тогдаучетная запись пользователя, которую использует пул приложений , может не иметь разрешений на запись в базу данных конфигурации .
Это немного глупо, так как вы, вероятно, не увидите этого при установке для разработчика (так как вы, вероятно, не настроите его с учетными записями на уровне домена для пулов приложений, только NETWORK SERVICE), и вы это сделаететолько отключиться, когда вы приступите к работе.
Примечание. Использование SPSecurity.RunWithElevatedPrivileges не изменит этого, поскольку это повысит уровень учетной записи ограниченного пользователя до учетной записи пула приложений, а не учетной записи пула приложений центрального администратора.
В статье Управление состоянием приложения дается разбивка опций и говорится о модели безопасности HOS
- пользователям требуются права администратора дляполучить доступ к связанному объекту SharePoint (например, SPFarm или SPWebApplication).
По этим причинам Я думаю, что HOS очень ограничен в реальном мире, и вам лучше использовать Property Bag Storageмодель , которая может хранить настройки на уровне фермы / веб-приложения / сайта и списка: -
объявлениеПреимущества - это, пожалуй, самый легкий и простой в использовании из всех вариантов конфигурации хранилища.
Также сообщается о преимуществах производительности и стабильности .
На самом деле Библиотека указаний MSDN SharePoint также использует хранилище Property Bag дляих реализация иерархическая Configuration Manager .