2011-04-12 17 views
7

Tüm siteyi ve alt siteyi sharepoint içinde almaya çalışıyorum ancak erişim engellendi.Sharepoint C# tüm site ve alt siteyi geri al

GetSubwebsForCurrentUser() özelliğini kullanmak üzere yazıyorum ama aynı mesajı alıyorum.

Kodum i yardıma ihtiyacım lütfen

  foreach (SPWebApplication webApp in SPWebService.ContentService.WebApplications) 
      {      
       foreach (SPSite siteCollection in webApp.Sites) 
       { 
        foreach(SPWeb web in siteCollection.RootWeb.GetSubwebsForCurrentUser()) 
        { 
         dropDownSite.Items.Add(web.Url); 
        } 


       } 
      } 

sonraki

olduğunu! Teşekkürler!

+0

Bu kod nerede çalışıyor? Web bölümü? Zamanlayıcı mı? Başka bir şey? –

+2

Sadece bir başlık, şimdi [SharePoint yığın değişim sitesi] (http://sharepoint.stackexchange.com/) var. Onun beta sürümünde ancak orada yayınlamalısınız (veya moderatör bu soruyu oraya taşıyabilir). Bu site daha fazla çekiş elde yardımcı olacaktır :) – pstrjds

+0

Kullanıcı bağlamsal tabanlı site listeleri arıyor musunuz? Öyleyse bunu sadece bir açılır liste listesi oluşturmak için yapıyor musunuz? Eğer öyleyse portalsitemapprovider öneririm. Ayrıca, kodunuz bu web'lerin her birini, her zaman bu ihtiyacım olan –

cevap

9

Muhtemelen İsterseniz bir satır içi temsilci yapabileceği SPSecurity.RunWithElevatedPrivileges(delegate())

aramak gibi bir şey gerekir! Bu bildirim yalnızca geçerli kullanıcı bir site koleksiyonu yöneticisi olduğu sürece doğrudur

Tüm kullanıcılar için bu işlev tüm site ve alt siteleri alacaktır.

public static IEnumerable<SPWeb> DescendantSites(this SPWeb input) 
    { 
     foreach (SPWeb web in input.GetSubwebsForCurrentUser()) 
     { 
      yield return web; 
      foreach (var subnode in web.DescendantSites()) 
       yield return subnode; 
     } 
    } 
+0

'u çalıştıran büyük bir bellek sızıntısına neden olacak şekilde düşük bir durumda bırakacaktır. Harika çalışıyor! – sergio

+0

Çalışırsa, lütfen gönderimi yanıt olarak işaretleyin :) teşekkürler. –

1

Emin olmak için, bu kod Sharepoint portalını barındıran sunucuda çalışıyor mu? Sharepoint'in hangi sürümünü kullanıyorsunuz?

Ayrıca, Sharepoint'in ortaya çıkardığı Web servislerini kullanmak mantıklı olur mu? http://msdn.microsoft.com/en-us/library/aa979690(v=office.12).aspx

Bu kodu SP ile aynı sunucuda çalıştırıyorsanız, kimlik bilgilerinizin SP'ye erişebildiğinden emin olun. Bunu bir web sitesinden arıyorsanız, "Anonim" olarak çalışmadığınızdan da emin olun.

Her şeyden önce, web servislerinden yararlanmanın işe yaramasının en kolay yolu olduğunu düşünüyorum. Ancak, gönderilen doğru izinlere sahip olduğunuzdan ve bu kullanıcının söz konusu verilere (SP yapılandırmalarında) erişebildiğinden emin olun.

Bu yardımcı olur umarım! Eğer kullanırsanız

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
foreach (SPWebApplication webApp in SPWebService.ContentService.WebApplications) 
      {      
       foreach (SPSite siteCollection in webApp.Sites) 
       { 
        foreach(SPWeb web in siteCollection.RootWeb.GetSubwebsForCurrentUser()) 
        { 
         dropDownSite.Items.Add(web.Url); 
        } 


       } 
      } 
    }); 
0

SPSite.AllWebs erişim engellendi iletisi görüntülenir:

İlgili konular