आपको सभी परिणामों को प्राप्त करने के लिए DirectorySearcher.PageSize को गैर-शून्य मान पर सेट करने की आवश्यकता है।
BTW आप भी DirectorySearcher जब आप API दस्तावेज़ बहुत स्पष्ट नहीं है, यह
using(DirectorySearcher srch = new DirectorySearcher(dirEnt, "(objectClass=Group)", loadProps))
{
srch.PageSize = 1000;
var results = srch.FindAll();
}
को पूर्ण कर लें निपटाने चाहिए, लेकिन अनिवार्य रूप से:
जब आप एक पृष्ठांकित खोज करते हैं, SizeLimit को अनदेखा किया जाता है, और सभी मिलान परिणाम लौटाए जाते हैं क्योंकि आप FindAll द्वारा दिए गए परिणामों के माध्यम से पुन: प्रयास करते हैं। परिणामों को एक समय में सर्वर से पुनर्प्राप्त किया जाएगा। मैंने उपर्युक्त 1000 का मूल्य चुना है, लेकिन यदि आप पसंद करते हैं तो आप एक छोटे से मूल्य का उपयोग कर सकते हैं। ट्रेडऑफ है: एक छोटे पेजसाइज का उपयोग करके परिणामों के प्रत्येक पृष्ठ को तेज़ी से वापस कर दिया जाएगा, लेकिन बड़ी संख्या में परिणामों को फिर से चालू करते समय सर्वर पर अधिक बार कॉल की आवश्यकता होगी।
डिफ़ॉल्ट रूप से खोज पेज (पेजसाइज = 0) नहीं है। इस मामले में SizeLimit परिणामों तक वापस आ गया है।
Biri के रूप में बताया, यह SearchResultCollection FindAll द्वारा दिया निपटान के लिए महत्वपूर्ण है, अन्यथा आप एक स्मृति रिसाव DirectorySearcher.FindAll के लिए MSDN दस्तावेज की टिप्पणियां खंड में वर्णित के रूप में हो सकता है: http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher.findall.aspx
एक .NET 2.0 या बाद में इसे टालने में मदद करने के लिए एक रैपर विधि लिखना है जो स्वचालित रूप से SearchResultCollection को निपटाता है। यह निम्नलिखित की तरह कुछ लग सकता है (या .NET 3.5 में एक विस्तार विधि हो सकता है):
public IEnumerable<SearchResult> SafeFindAll(DirectorySearcher searcher)
{
using(SearchResultCollection results = searcher.FindAll())
{
foreach (SearchResult result in results)
{
yield return result;
}
} // SearchResultCollection will be disposed here
}
फिर आप इस इस्तेमाल कर सकते हैं इस प्रकार है:
using(DirectorySearcher srch = new DirectorySearcher(dirEnt, "(objectClass=Group)", loadProps))
{
srch.PageSize = 1000;
var results = SafeFindAll(srch);
}
उत्कृष्ट वैकल्पिक हल। एक उत्थान के लायक है। – Biri
इसने मेरे प्रश्न और उत्तर दिया! बहुत बढ़िया सलाह, बहुत बहुत धन्यवाद! – naspinski
क्या होगा यदि foreach में प्रारंभिक समाप्ति है? क्या परिणाम संग्रह अभी भी जारी किया गया है? – kerem