这个问题的背景是我目前的任务是开发一个应用程序页面,使用户能够创建网站集。从列表项中读取网站集的属性。我的解决方案在大多数情况下都有效。但是,有一种应用程序池身份配置会引发访问被拒绝,我想了解为什么会发生这种情况。
我的代码的(非常)精简版本如下所示:
SPSecurity.RunWithElevatedPrivileges(delegate { try
{
SPWebApplication webApp = this.Web.Site.WebApplication;
SPSiteCollection siteColl = webApp.Sites;
SPSite newSite = siteColl.Add(mngPath + siteUrl, siteName, siteDesc, LocaleId,
null, primarySiteAdmin, String.Empty,
String.Empty));
});
当 Identities 设置如下时抛出 UnauthorizedAccessException:
SharePoint 管理中心 v4 --> localdomain\adminaccount
SharePoint - 80 --> 网络服务
NetworkService 和 domain\adminaccount 的所有其他组合都可以工作。有人对此有解释吗?
更新
我想您必须使用与中央管理应用程序池相同的用户来运行您的共享点应用程序池,以便在数据库上拥有足够的权限。但这仍然不能解释为什么它在以下配置下工作:
SharePoint 管理中心 v4 --> NetworkService
SharePoint - 80 --> localdomain\adminaccount
顺便说一句,关于 SA 的另一个问题提供了解决方案(以及问题的更多细节)。请参阅通过工作流预配新网站集的权限。