2011-10-22 6 views
1

Я хочу использовать SPExport (который работает нормально) и SPImport для копирования одного веб-сайта в другое место. Я использую страницу приложения в Sharepoint Foundation 2010. Этот код выполняется в событии Click Button.Sharepoint 2010 исключение безопасности SPImport.Run

using (SPWeb web = site.OpenWeb(sourceWebUrl)) 
        { 
         SPExportSettings exportSettings = new SPExportSettings(); 
         exportSettings.FileLocation = exportPath; 
         exportSettings.BaseFileName = exportFileName; 
         exportSettings.SiteUrl = site.Url; 

         exportSettings.ExportMethod = SPExportMethodType.ExportAll; 
         exportSettings.FileCompression = true; 
         exportSettings.IncludeVersions = SPIncludeVersions.All; 
         exportSettings.IncludeSecurity = SPIncludeSecurity.All; 
         exportSettings.ExcludeDependencies = false; 
         exportSettings.ExportFrontEndFileStreams = true; 
         exportSettings.OverwriteExistingDataFile = true; 

         SPExportObject expObj = new SPExportObject(); 
         expObj.IncludeDescendants = SPIncludeDescendants.All; 
         expObj.Id = web.ID; 
         expObj.Type = SPDeploymentObjectType.Web; 
         exportSettings.ExportObjects.Add(expObj); 

         SPExport export = new SPExport(exportSettings); 
         export.Run(); 
        } 
using (SPWeb web = site.OpenWeb(destinationWebUrl)) 
        { 
         web.AllowUnsafeUpdates = true; 

         SPImportSettings importSettings = new SPImportSettings(); 

         web.FileLocation = exportPath; 
         web.BaseFileName = exportFileName; 
         web.IncludeSecurity = SPIncludeSecurity.All; 
         web.UpdateVersions = SPUpdateVersions.Overwrite; 
         web.RetainObjectIdentity = false; 
         web.SiteUrl = site.Url; 
         web.WebUrl = web.Url; 
         web.Validate(); 

         SPImport import = new SPImport(importSettings); 
         import.Run(); 
         web.AllowUnsafeUpdates = false; 
        } 

Исключение «Проверка безопасности для этой страницы является недопустимым. Нажмите кнопку Назад в вашем веб-браузере, обновите страницу и попробуйте свои операции снова.» Выбрасывается при SPImport.Run() называется.

Мне не удалось найти решение этой проблемы, не добавляя элемент управления FormDigest на странице приложения или «Разрешить небезопасные обновления» в целевой сети.

Кроме того, запуск этого кода из Консольного приложения работает нормально, но если код запускается с страницы приложения, он не работает (даже с повышенной безопасностью).

Любая помощь будет оценена по достоинству. Благодарю.

ответ

2

Успели сделать это, добавив

SPUtility.ValidateFormDigest(); 

в строке 1.

+0

Поздравляю с решением. Когда вы в состоянии, пожалуйста, отметьте свой ответ как «принятый», чтобы другие могли узнать о вашем успехе. Cheers ~ –

+1

Для людей, которые повышают привилегии, вам нужно сделать это раньше. http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.validateformdigest(v=office.14).aspx – trgraglia

Смежные вопросы