如果网站集的网址位于两个不同的网站(例如http://mysite/Docs1/和http://mysite/subsite/Docs2/),我在访问SPSite对象的两个不同实例中的对象时遇到问题。请考虑以下代码:
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中查找。
目的是能够提供将文件从一个文档库移动到另一个文档库的能力(无论是否在同一网站集中)。
我做错了什么?
答案 0 :(得分:4)
您使用相同的网址打开SPSites
using (SPSite sourceSite = new SPSite(sUrl))
using (SPSite destinationSite = new SPSite(sUrl))
您是否尝试过MSDN文章? http://msdn.microsoft.com/en-us/library/ms470176.aspx
答案 1 :(得分:2)
除了上面的正确答案之外,你绝对应该处理你的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);
}
}