2

更新

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

作为对评论的回应,这是我用来创建新网站集的代码:

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”是一个完全有效的站点定义。

希望我通过使用作为站点操作菜单上的元素可用的应用程序页面(仅限站点管理员)来克服这个问题。使用模仿我可以成功地启动这个过程。我在另一个问题中强调了一些其他问题。

原始问题

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

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

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

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

这方面的一些指导会很有用,因为我在这方面找不到太多信息。

谢谢

4

2 回答 2

0

I'd go with option number 1. It's probably an authorization issue. How are you accessing SharePoint? with the SDK or trough its web services?

于 2009-10-26T05:15:50.017 回答
0

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

此外,您正在提升为您的 SharePoint 网站的应用程序池的标识。此帐户是否有足够的权限来创建网站集?您可以在管理中心 > 应用程序管理 > Web 应用程序策略中进行检查。

于 2010-01-11T02:13:34.513 回答