2011-04-12 15 views
7

सबसाइट पुनर्प्राप्त करें मैं सभी साइट को पुनर्प्राप्त करने और शेयरपॉइंट में सबसाइट करने का प्रयास कर रहा हूं लेकिन मुझे पहुंच से वंचित कर दिया गया है।शेयरपॉइंट सी # सभी साइट पुनर्प्राप्त करें और

मैं GetSubwebsForCurrentUser() संपत्ति का उपयोग करने के बारे में पढ़ता हूं, लेकिन मुझे एक ही संदेश मिलता है।

मेरे कोड अगले

  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

यह कोड कहां से चल रहा है? वेब पार्ट? टाइमर नौकरी? कुछ और? –

+2

बस एक सिर ऊपर, अब एक [शेयरपॉइंट स्टैक एक्सचेंज साइट] (http://sharepoint.stackexchange.com/) है। बीटा में लेकिन आपको वहां पोस्ट करना चाहिए (या मॉडरेटर इस सवाल को वहां ले जा सकता है)। यह साइट को और कर्षण पाने में मदद करेगा :) – pstrjds

+0

क्या आप उपयोगकर्ता प्रासंगिक प्रासंगिक साइट सूचियों की तलाश में हैं? यदि ऐसा है तो आप ड्रॉपडाउन की एक सूची को पॉप्युलेट करने के लिए ऐसा कर रहे हैं? यदि ऐसा है तो मैं portalsitemapprovider का सुझाव दूंगा। इसके अलावा आपका कोड उन जालों में से एक को एक अज्ञात स्थिति में छोड़ देगा जिसके परिणामस्वरूप –

उत्तर

9

आप शायद SPSecurity.RunWithElevatedPrivileges(delegate())

कॉल करने के लिए यदि आप चाहें तो आप एक इनलाइन प्रतिनिधि कर सकता है, की तरह कुछ की आवश्यकता होगी! यह कथन केवल तब तक सही है जब तक कि वर्तमान उपयोगकर्ता साइट संग्रह व्यवस्थापक

इसलिए सभी उपयोगकर्ताओं के लिए यह फ़ंक्शन सभी साइट और उप साइट प्राप्त करता है।

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

चलाए जाने पर हर बार एक बड़ी मेमोरी रिसाव होती है, जो मुझे चाहिए, बहुत बहुत धन्यवाद !!! बहुत अच्छा काम करता है!!!! – sergio

+0

यदि यह काम करता है, तो कृपया मेरी पोस्ट को जवाब के रूप में चिह्नित करें :) धन्यवाद। –

1

बस यह सुनिश्चित करने के लिए, क्या यह कोड Sharepoint पोर्टल को होस्ट करने वाले सर्वर पर चल रहा है? आप शेयरपॉइंट का कौन सा संस्करण चल रहे हैं?

साथ ही, क्या शेयरपॉइंट का खुलासा करने वाले वेबसाइट सर्विसेज का उपयोग करना समझदारी होगी? http://msdn.microsoft.com/en-us/library/aa979690(v=office.12).aspx

यदि आप इस कोड को एसपी के समान सर्वर पर चला रहे हैं, तो सुनिश्चित करें कि आपके क्रेडेंशियल के पास एसपी तक पहुंच है। यदि आप इसे किसी वेबसाइट से कॉल कर रहे हैं, तो यह भी सुनिश्चित करें कि आप "बेनामी" के रूप में नहीं चल रहे हैं।

कुल मिलाकर, मुझे लगता है कि वेबसाइसेस का लाभ लेना इसे काम करने का सबसे आसान तरीका है। लेकिन सुनिश्चित करें कि आपके पास सही अनुमतियां भेजी जा रही हैं और उस उपयोगकर्ता को उस डेटा पर (एसपी कॉन्फ़िगरेशन में) पहुंच है।

आशा है कि मदद करता है!

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 प्रवेश निषेध संदेश प्रकट होता है:

संबंधित मुद्दे