目标是拥有一个 Web 用户界面,可以选择使用新内容数据库创建新网站集。
使用管理员用户,我可以在 CA 中手动创建新的内容数据库。我还可以在这个内容数据库中创建一个新的网站集。
这个想法是创建一个事件接收器(C#)。如果用户将数据添加到表中,则将执行上述操作。
实验: a) 控制台应用程序 - 有效!
using (SPSite site = new SPSite("http://sp2013")) {
using (SPWeb spWeb = site.OpenWeb()) {
SPWebApplication elevatedWebApp = spWeb.Site.WebApplication;
elevatedWebApp.ContentDatabases.Add("sp2013", "WSS_Content_80_" + DateTime.Now.ToString("yyyymmddhhMMss"), null, null, 10, 15, 0);
}
}
b) 事件接收器 - 仅创建网站集有效,创建内容数据库无效!错误:拒绝访问。
c) Web 服务 - 不工作!错误:拒绝访问。
那么,当我可以创建网站集但只有内容数据库创建不进行时,为什么会收到拒绝访问错误?
最后我执行了 PS 脚本——但这也行不通。
# AUTHOR: Paul Kotlyar
# CONTACT: unclepaul84@gmail.com
# DESCRIPTION: sets an option on content web service that allows updating of SP Administration objects such as SPJobDefinition from content web applications
function Set-RemoteAdministratorAccessDenied-False()
{
# load sharepoint api libs
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration") > $null
# get content web service
$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
# turn off remote administration security
$contentService.RemoteAdministratorAccessDenied = $false
# update the web service
$contentService.Update()
}
也许有人知道解决方案?
我在Stackexchange中问了同样的问题。