Проверка того, существует ли сеть SharePoint - PullRequest
0 голосов
/ 22 декабря 2011

Я пишу обработчик событий, который в 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% загрузки процессора до 50-80% и оставался там до тех пор, пока не убил его вручную.Я предполагаю, что мое утверждение do while действует не так, как мне кажется, а просто зацикливается на бесконечность.

1 Ответ

1 голос
/ 22 декабря 2011

Этот код, кажется, находит первый URL, который соответствует веб-сети, которая существует, а не первый, соответствующий веб-сети, которая не существует:

  • Вы проверяете tempweb.Exists == false вместо == true
  • Вы только удаляете и возвращаете URL после того, как tempweb.Exists имеет значение true.

Если веба не существует, это застрянет в очень длинном цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...