该方法SPSite.Exists
检查站点集合是否存在于指定的 URL。但false
如果 URL 指向网站集的子网站,则返回。
给定以下结构:
http://服务器 -> 网站集
http://server/web -> 子网
http://server/sites/somesite -> 网站集
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://server的网站集。
虽然这在大多数情况下非常有用,但在某些情况下这很危险。考虑以下方法:
public static void DeleteSite(string url)
{
new SPSite(url).Delete();
}
如果使用http://server/this/does/not/exist调用此方法,则将删除位于http://server的最顶层网站集。