的方法SPSite.Exists
檢查網站集是否存在在指定的URL。但如果URL指向網站集的子網站,則會返回false
。
考慮以下結構:
http://server -> site collection
http://server/web -> sub web
http://server/sites/somesite -> site collection
SPSite.Exists(new Uri("http://server")) // returns true
SPSite.Exists(new Uri("http://server/web")) // returns false
SPSite.Exists(new Uri("http://server/sites/somesite")) // returns true
如果你想檢查是否有在給定的URL的網頁,你必須使用的方法SPSite.OpenWeb(string url, bool requireExactUrl)
:
public static bool SiteExists(string url)
{
try
{
using (SPSite site = new SPSite(url))
{
using (SPWeb web = site.OpenWeb(url, true))
{
return true;
}
}
}
catch (FileNotFoundException)
{
return false;
}
}
的SPSite
構造函數接受指向網站集的子元素的任何URL。即使在給定位置沒有元素。
new SPSite("http://server/this/does/not/exist");
這個文檔片斷將返回該網站集位於的http://服務器。
雖然這在大多數情況下非常有用,但在有些情況下這很危險。請看下面的方法:
public static void DeleteSite(string url)
{
new SPSite(url).Delete();
}
如果此方法被調用HTTP://服務器/這/沒有/沒有/存在最頂端的網站集在的http://服務器將被刪除。
是什麼路徑比較呢? – kevin
關於檢查網站的管理路徑。 –
-1:如果發生除FileNotFoundException之外的其他異常,則此方法將返回「true」。另外,將爲指向不存在的「子網站集合」的URL返回「true」。看到我的答案。 – Stefan