更新
我现在可以执行成功的 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”是一个完全有效的站点定义。
希望我通过使用作为站点操作菜单上的元素可用的应用程序页面(仅限站点管理员)来克服这个问题。使用模仿我可以成功地启动这个过程。我在另一个问题中强调了一些其他问题。
原始问题
我需要允许非场管理员能够使用非常具体的网站定义创建网站集。这些人将无法访问中央管理员,因此需要自定义解决方案来允许创建这些。我尝试了几种解决方案,但希望就推荐的方法达成共识。
自定义 Web 服务 - 我编写了一个自定义 Web 服务来执行此任务,但这引起了很大的麻烦,即使 Web 服务在使用与共享点应用程序池相同的身份的应用程序池中运行,我也无法使其工作。在尝试通过 Web 服务执行此操作时也存在表单摘要问题。
Web 部件/应用程序页面 - 这里没有表单摘要问题,因为我们在 SharePoint 上下文中,但是我尝试使用 RunWithElevatedPrivileges,但在调用 SPWebbApplication.Sites.Add() 时我仍然得到拒绝访问,即使所有 SPSite 和 SPWeb pbjects在提升的代码块内实例化。我在 UI 级别尝试直接模拟,但收到 UnhandledException 提示模拟失败。
stsadm 周围的应用程序包装器 - 我还没有尝试过这个,因为我担心这种方法的可行性,肯定有比这更干净的方法吗?
这方面的一些指导会很有用,因为我在这方面找不到太多信息。
谢谢