2011-12-22 3 views
0

ItemAdded에 사이트가 있는지 확인한 후 주어진 URL 또는 대체 URL로 사이트를 만듭니다. 나는 이미 비슷한 것을 썼지 만 사이트에 대한 코드를 정리하려고 시도 할 때 아래의 메소드가 존재합니다. SharePoint 웹이 있는지 확인합니다.

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 50-80 %로 0 %의 CPU 사용률에서 가서 내가 수동으로 사망 할 때까지 거기에 머물렀다 것을 발견했다. 나는 그것이해야한다고 생각하는 것처럼 내 do do statement가 작동하지 않고 무한대로 반복되고 있다고 생각합니다.

답변

1

이 코드는 존재 웹과 일치하는 첫 번째 URL을 찾는 것 같다, 첫 번째가 아닌 웹 일치가 존재하지 않습니다 :

  • 을 당신은 오히려 == true
  • 보다 tempweb.Exists == false을 확인하고 tempweb.Exists이 참일 경우 처분하고 URL을 반환하는 것입니다.

웹이 없으면 매우 긴 루프가 걸립니다.

+0

딱지. 나는 이것을 오랫동안 보았고 그것을 알아 차리지 못했다. 감사! – Mike

+0

진실 또는 거짓으로 비교하는 경우 부울을 올바르게 사용하지 않습니다 ... – Nacht

관련 문제