У меня проблема с доступом к объектам в двух разных экземплярах объекта SPSite, если URL-адрес семейства сайтов расположен на двух разных сайтах (например, http://mysite/Docs1/ и http://mysite/subsite/Docs2/). Рассмотрим следующий код:
public static void MoveDocument(Uri sourceUrl, Uri destinationUrl)
{
string sUrl = sourceUrl.ToString();
string dUrl = destinationUrl.ToString();
using (SPSite sourceSite = new SPSite(sUrl))
using (SPSite destinationSite = new SPSite(sUrl))
{
SPWeb sourceWeb = sourceSite.OpenWeb();
SPWeb destinationWeb = destinationSite.OpenWeb();
SPFile sourceFile = sourceWeb.GetFile(sUrl);
SPFolder destinationFolder = destinationWeb.GetFolder(dUrl);
MoveDocument(sourceFile.ParentFolder, destinationFolder, sourceFile.Name);
}
}
В приведенном выше коде, если я пытаюсь инициализировать папку SPFolder, находящуюся на другом сайте, чем на исходном веб-сайте, происходит сбой, поскольку SharePoint пытается искать на том же сайте, что и sourceSite, а не destinationSite.
Цель заключается в том, чтобы предоставить возможность перемещать файл из одной библиотеки документов в другую (независимо от того, находится ли в одном семействе сайтов или нет).
Что я делаю не так?