2010-08-16 66 views
0

如果站点集合的URL位于两个不同站点(例如,http://mysite/Docs1/http://mysite/subsite/Docs2/)内,我在访问SPSite对象的两个不同实例内的对象时遇到问题。请看下面的代码:来自两个不同站点的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。

意图是能够将文件从一个文档库移动到另一个文档库(无论是否在同一个网站集合中)。

我在做什么错?

回答

4

您正在使用相同的网址打开您的SPSites

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

您是否尝试过MSDN文章? http://msdn.microsoft.com/en-us/library/ms470176.aspx

+0

WTF!这是根据“我是一个完全白痴”类别提交的!谢谢! – senfo 2010-08-16 14:49:08

+1

微软在该页面的第一个例子通过将两个一次性类型合并为一个调用来泄漏网站集。我刚刚提交了社区内容来提及这一点。 – 2010-08-16 16:47:25

+0

@Jesse - 非常好的一点,并感谢您向MSDN提交内容,它可以帮助我们在某个时间点或其他地方 @senfo - 在我们的代码中加入第二对眼睛总是很好! – 2010-08-17 14:16:31

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); 
    } 
} 
+0

在这些泄漏处发现了 - 总是值得运行SPDisposeCheck http://code.msdn.microsoft.com/SPDisposeCheck – 2010-08-17 14:14:08

相关问题