kev*_*vin 6 c# sharepoint spsite
SPSite.Exists(url)虽然网址存在,但有人知道为什么返回false.
如果我检查上面的语句,它返回false.
但如果我直接使用,我可以毫无问题地打开网站
SPSite myRootSite = new SPSite(url);
Run Code Online (Sandbox Code Playgroud)
这是我的编码.
if (SPSite.Exists(new Uri(url)))
{
SPSite myRootSite = new SPSite(url);
}
Run Code Online (Sandbox Code Playgroud)
更新:
抱歉,我是从我的某个业务层调用SharePoint,这是不允许的.
我的错 !!
Ste*_*fan 15
该方法SPSite.Exists检查网站集是否存在于指定的URL.但是,false如果URL指向网站集的子网,则返回.
鉴于以下结构:
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
Run Code Online (Sandbox Code Playgroud)
如果要检查给定URL是否有任何Web,则必须使用该方法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;
}
}
Run Code Online (Sandbox Code Playgroud)
该SPSite构造函数接受指向网站集的一个子元素的任何URL.即使给定位置没有元素.
new SPSite("http://server/this/does/not/exist");
Run Code Online (Sandbox Code Playgroud)
此剪切将返回位于http:// server的网站集.
虽然这在大多数情况下非常有用,但在某些情况下这是危险的.请考虑以下方法:
public static void DeleteSite(string url)
{
new SPSite(url).Delete();
}
Run Code Online (Sandbox Code Playgroud)
如果使用http:// server/this/does/not/exists调用此方法,则将删除http:// server上的最顶层网站集.
实际上,SPSite.Exists 方法尝试从您的 Url 创建站点并尝试捕获异常。除此之外,它还会执行您可能不需要的路径比较。因此,如果您创建自己的方法来检查该站点是否存在,那就好了。
这个方法可能看起来像
public static bool SiteExists(string path){
SPSite site;
try{
site = new SPSite(path);
}
catch(FileNotFoundException e)
{
return false;
}
finally
{
if(site!=null) site.Dispose();
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15001 次 |
| 最近记录: |