在SharePoint中自动创建网站集

时间:2009-10-23 07:43:55

标签: sharepoint sharepoint-2007 sitecollection

更新

我现在可以执行成功的UI模拟。这是我使用的代码的一个问题,在查看Jay Nathan's article后,我已经恢复了他的代码,一切都很好。

在回复评论时,这是我用来创建新网站集的代码:

Dim newSite As SPSite = webApp.Sites.Add( _
    txtWebApp.Text & "/cg/" & strURL, txtName.Text, txtDesc.Text, 1033, "SITEDEF#0", _
    "DOMAIN\ACCOUNT", "NAME", "EMAIL", _
    "DOMAIN\ACCOUNT", "NAME", "EMAIL")

和是“SITEDEF#0”是一个完全有效的网站定义。

希望我通过使用“应用程序页面”来解决此问题,该页面可作为“网站操作”菜单上的元素(仅限站点管理员)。使用模仿我可以成功地激发这个过程。我在another question.

中强调了一些其他问题

原始问题

我需要允许非服务器场管理员使用非常具体的网站定义来创建网站集。这些人无法访问中央管理员,因此需要自定义解决方案才能创建这些人员。我已经尝试了几种解决方案,但希望就推荐的方法达成一些共识。

  1. 自定义Web服务 - 我编写了一个自定义Web服务来执行此任务但是这引起了很大的麻烦,即使Web服务使用与sharepoint应用程序池相同的身份在应用程序池中运行,我也无法让这个工作。在尝试执行此操作时也会出现表单摘要问题。

  2. Web部件/应用程序页面 - 我们在SharePoint上下文中没有表单摘要问题,但是我尝试使用RunWithElevatedPrivileges但是在调用SPWebbApplication.Sites.Add()时仍然会拒绝访问,即使所有SPSite和SPWeb pbject都在提升的代码块中实例化。我已尝试在UI级别进行直接模拟,并且我得到一个UnhandledException,表示模拟已失败。

  3. 应用程序包装器围绕stsadm - 我还没有尝试过这个,因为我担心这种方法的可行性,肯定有比这更简洁的方法吗?

  4. 关于这方面的一些指导是有用的,因为我在这方面找不到太多。

    谢谢

2 个答案:

答案 0 :(得分:0)

我选择1号选项。这可能是授权问题。你是如何访问SharePoint的?使用SDK还是通过其Web服务?

答案 1 :(得分:0)

我会选择2号。该代码应该可以使用,也许假冒代码不正确?例如,您不能像通常那样使用SPContext。

此外,您将升级到SharePoint网站的应用程序池的标识。此帐户是否有足够的权限来创建网站集? 您可以登录管理中心>应用程序管理> Web应用程序策略。