检查SharePoint Web是否存在

时间:2011-12-22 15:47:13

标签: c# sharepoint

我正在编写一个事件处理程序,在ItemAdded上检查是否存在某个站点,然后使用给定的URL或备用URL创建一个站点。我已经写了类似的东西,但我试图清理我的代码为网站存在检查下面的方法。

    private string CheckSiteExists(SPWeb web, string siteURL, string webURL)
    {
        //Counter for our alternate URL
        int i = 0;
        //Open original URL
        SPWeb tempweb = web.Site.OpenWeb(webURL + "/" + siteURL);
        //Check if site exists
        if (tempweb.Exists == false)
        {
            do
            {
                i++;
                tempweb = web.Site.OpenWeb(webURL + "/" + siteURL + "_" + i);
            }
            while (tempweb.Exists == false);
            //Dispose of our web
            tempweb.Dispose();
        }
        else
        {
            tempweb.Dispose();
            //If site does not exist, return original URL
            return siteURL;
        }
        //If site does exist, return original url plus counter
        return siteURL + "_" + i;
    }

我决定测试我拥有的东西,发现w3wp从0%的CPU使用率变为50-80%并一直呆在那里直到我手动杀死它。我猜我做的while声明并没有像我认为的那样表现,它只是循环到无限。

1 个答案:

答案 0 :(得分:1)

此代码似乎是找到第一个与确实存在的Web匹配的URL,而不是第一个匹配不存在的Web:

  • 您正在检查tempweb.Exists == false而不是== true
  • 您只是在tempweb.Exists为真后才处理并返回网址。

如果不存在网络,这将陷入很长的循环。