UPDATE
Теперь я могу выполнить успешную олицетворение пользовательского интерфейса. Это была проблема с кодом, который я использовал, и после просмотра статьи Джея Натана я вернулся к его коду, и все работает отлично.
В ответ на комментарий это код, который я использую для создания нового семейства сайтов:
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" - это совершенно правильное определение сайта.
Надеюсь, я преодолел эту проблему, используя страницу приложения, которая доступна в качестве элемента в меню «Действия сайта» (только для администраторов сайта). Используя подражание, я могу успешно инициировать этот процесс. Есть некоторые дополнительные проблемы, которые я выделил в другом вопросе.
ОРИГИНАЛЬНЫЙ ВОПРОС
Мне нужно разрешить администраторам, не являющимся фермерами, создавать семейства сайтов с использованием очень определенного определения сайта. Эти люди не будут иметь доступа к центральному администратору, поэтому им потребуется специальное решение для их создания. Я испробовал несколько решений, но хочу достичь консенсуса относительно рекомендуемого подхода.
Пользовательская веб-служба - я написал пользовательскую веб-службу для выполнения этой задачи, однако это вызвало серьезные головные боли, и хотя веб-служба работала в пуле приложений, используя тот же идентификатор, что и пул приложений sharepoint, я не смогла заставить это работать. Также были проблемы с дайджестом формы при попытке выполнить это через веб-сервис.
Страница веб-частей / приложений - здесь нет проблем с дайджестом форм, так как мы находимся в контексте SharePoint, однако я попытался использовать RunWithElevatedPrivileges, но мне все равно отказано в доступе при вызове SPWebbApplication.Sites.Add (), хотя все объекты SPSite и SPWeb создаются внутри блока кода с повышенными правами. Я пробовал прямое олицетворение на уровне пользовательского интерфейса и получаю исключение UnhandledException о том, что олицетворение не удалось.
Application Wrapper Around stsadm - я еще не пытался это сделать, так как меня беспокоит жизнеспособность этого подхода, наверняка есть более чистый способ, чем этот?
Некоторое руководство по этому вопросу было бы полезно, так как я не могу найти много об этом.
Спасибо