存储Web组件的服务器场级数据

时间:2011-07-26 18:38:53

标签: sharepoint sharepoint-2010

我已经构建了一个SharePoint用户控件(不是Web部件),并且正在通过解决方案,功能等部署它。

这是一个商业组件,我希望能够在注册后存储许可证信息。我已经获得了所有许可证,但是,我试图找到一个“全局”(即农场级别)存储信息的位置(因此它适用于多服务器场)。

这是一个商业组件,所以我无法控制安全策略,应用程序池帐户等。我需要它在没有管理员需要重新配置他们的农场的情况下工作。

我考虑过:

  • Web.config - 目前为止的最佳选择,但已经读过Windows UAC可能会干扰并且可能并不总是会应用更改。

  • 分层对象存储 - 几个安全问题 - 即应用程序池需要访问Config数据库(许多环境不允许)

  • 根网站属性包 - 可能。我可以在注册时更新所有根网站属性,但是在创建新的网络应用程序时会发生什么?用户必须为每个Web应用程序注册组件吗?

  • 注册表,文件系统 - 不在服务器之间保留

  • 自定义数据库 - 似乎很多地方都失败了。

我知道其他商业供应商正在以某种方式这样做。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

Web.config - 目前为止的最佳选择,但已经读过Windows UAC可能会干扰并且可能无法始终应用更改。

关于将配置内容放在web.config中有很多不同的意见。就个人而言,我会推荐它,因为SharePoint会自动推动对它的更改而你无法真正控制正在发生的事情。

我有类似的要求,但是在SiteCollection级别。我所做的是在SiteCollection的根目录下创建一个包含2列(Key,Value)的简单自定义列表。在我的代码中,我硬编码了列表的名称并使用了提升的权限(因为我将列表权限设置为admin-only)来访问我需要的值。

您基本上可以这样做,但不是在SiteCollection级别的根目录,而是在管理中心。这样,您就可以从SharePoint中的任何位置访问配置列表。

另一个想法是设置一个简单的配置数据库,然后使用自定义Web服务(在SharePoint中部署)来获取它的值。然而,这给这样一个“简单”的任务增加了很多开销,如果没有适当的异常处理/日志记录,你会遇到很多麻烦。