SPSite с двух разных сайтов - PullRequest
       3

SPSite с двух разных сайтов

0 голосов
/ 16 августа 2010

У меня проблема с доступом к объектам в двух разных экземплярах объекта 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.

Цель заключается в том, чтобы предоставить возможность перемещать файл из одной библиотеки документов в другую (независимо от того, находится ли в одном семействе сайтов или нет).

Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 16 августа 2010

Вы используете тот же URL для открытия своих SPS-сайтов

using (SPSite sourceSite = new SPSite(sUrl))
using (SPSite destinationSite = new SPSite(sUrl))

Вы пробовали статью MSDN? http://msdn.microsoft.com/en-us/library/ms470176.aspx

2 голосов
/ 16 августа 2010

В дополнение к правильному ответу, приведенному выше, вам определенно следует избавиться от объектов SPWeb:

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(dUrl))
    using (SPWeb sourceWeb = sourceSite.OpenWeb())
    using (SPWeb destinationWeb = destinationSite.OpenWeb())
    {
        SPFile sourceFile = sourceWeb.GetFile(sUrl);
        SPFolder destinationFolder = destinationWeb.GetFolder(dUrl);

        MoveDocument(sourceFile.ParentFolder, destinationFolder, sourceFile.Name);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...