Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式在C中创建内容数据库(SP 2013)_C#_Sharepoint_Permissions_Sharepoint 2013_Sitecollection - Fatal编程技术网

C# 以编程方式在C中创建内容数据库(SP 2013)

C# 以编程方式在C中创建内容数据库(SP 2013),c#,sharepoint,permissions,sharepoint-2013,sitecollection,C#,Sharepoint,Permissions,Sharepoint 2013,Sitecollection,目标是拥有一个web用户界面,可以选择使用新的内容数据库创建新的网站集 使用管理员用户,我可以在CA中手动创建新的内容数据库。我还可以在此内容数据库中创建新网站集 其想法是创建一个事件接收器C。如果用户向表中添加数据,则将执行所提到的操作 实验: 控制台应用程序-工作 using (SPSite site = new SPSite("http://sp2013")) { using (SPWeb spWeb = site.OpenWeb()) { SPWebApplication

目标是拥有一个web用户界面,可以选择使用新的内容数据库创建新的网站集

使用管理员用户,我可以在CA中手动创建新的内容数据库。我还可以在此内容数据库中创建新网站集

其想法是创建一个事件接收器C。如果用户向表中添加数据,则将执行所提到的操作

实验: 控制台应用程序-工作

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()
}
也许有人知道解决办法


我在中问了相同的问题。

这是一个权限问题,但不适用于客户端帐户。客户机用户是不相关的。问题在于,要创建内容数据库,您的代码需要服务器场管理员权限。但是,使用提升的权限运行代码是不够的,因为当您以这种方式执行代码时,SharePoint将与相应web应用程序的应用程序池用户进行模拟

如果的应用程序池用户没有服务器场管理员权限,则您无法使用事件接收器创建内容数据库。可能由于此原因,您的事件接收器和Web服务代码出现拒绝访问错误。问题是将服务器场管理员权限授予应用程序池或服务用户,这是一个非常糟糕的主意


我建议您将此解决方案作为计时器作业来实现。您可以创建SharePoint场解决方案并创建计时器作业,因为通常计时器作业是使用场管理员帐户执行的。通过这种方式,您可以创建一个内容数据库。

对于任何拒绝访问的错误:什么用户/身份正在对什么东西执行什么操作?然后查看与该用户/标识的操作相关联的权限。请记住,服务器端与客户端不同。用户也是Web应用程序用户策略中的场管理员,具有完全控制权限。尝试使用RunWithLevelatedPrivileges运行代码,但未运行。用户:哪一个?客户机还是服务器?执行这些操作的是服务器,需要访问的是用户。客户端用户是服务器场管理员。客户端用户可能不相关,服务器正在执行这些操作;因此,服务器需要访问权限。