2010-08-16 62 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

相關問題