我创建了一个自定义计时器作业,需要一些配置才能运行。我正在尝试将配置另存为SPPersistedObject
在分层对象存储中。
分层对象存储保存在 SharePoint 配置数据库中,因此我在尝试使用SPWebApplication
作为家长。
我什至尝试过提升权限,但它没有帮助,因为它只是当前 Web 应用程序的应用程序池帐户,它不需要访问 SharePoint 配置数据库。
有任何想法吗?
正如您所发现的,分层对象存储 (HOS) 存储在配置数据库中,而不是内容数据库中。
如果您在中央管理员以外的站点上下文中运行,则应用程序池使用的用户帐户可能没有写入配置数据库的权限.
这有点奇怪,因为您可能不会在开发人员安装中看到这一点(因为您可能不会使用应用程序池的域级别帐户进行设置,只有网络服务),并且只有当您获得到生产。
注意 - 使用 SPSecurity.RunWithElevatedPrivileges 不会更改此设置,因为它只是从受限用户帐户提升到应用程序池帐户,而不是中央管理应用程序池帐户。
文章管理应用程序状态给出了选项的详细信息,并说明了居屋的情况
安全模型——用户需要
管理员权限来访问
相关的 SharePoint 对象(例如
SParm 或 SPWebApplication)。
由于这些原因我认为居屋在现实世界中的使用非常有限,你最好使用财产袋存储模型它可以存储 Farm/WebApp/Site 和列表级别的设置:-
优点——可能是最大的
重量轻且易于使用
配置存储选项。
也有报道称性能和稳定性优势.
事实上MSDN SharePoint 指导库还使用 Property Bag 存储来实现分层结构配置管理器.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)