2011-09-23 11 views
13

निम्न कोड हमारे डोमेन पर विभिन्न मशीनों से ठीक काम करता है।FindByIdentity - प्रदर्शन अंतर

var context = new PrincipalContext(ContextType.Domain); 
var principal = UserPrincipal.FindByIdentity(context, @"domain\username") 

हालांकि, अगर मैं एक मशीन है कि एक डोमेन में नहीं है पर इस समान कोड चलाने के लिए, यह काम करता है लेकिन FindByIdentity लाइन 2 + सेकंड लेता है।

var context = new PrincipalContext(ContextType.Machine); 
var principal = UserPrincipal.FindByIdentity(context, @"machinename\username") 

इस प्रदर्शन अंतर PrincipalContext निर्माता और/या FindByIdentity विधि करने के लिए विशेष मानकों की आपूर्ति द्वारा संबोधित किया जा सकता है? क्या आईआईएस या विंडोज़ में कोई सेटिंग है जिसे tweaked किया जा सकता है?

कम से कम, क्या कोई मुझे बता सकता है कि यह दूसरे परिदृश्य में धीमा क्यों हो सकता है?

यह कोड विंडोज सर्वर 2008 आर 2 पर आईआईएस 7.5 (एकीकृत पाइपलाइन) में होस्ट किए गए एएसपी.नेट एमवीसी 3 ऐप से चल रहा है।

+0

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

+0

केवल अनोखी बात यह है कि यह डोमेन नियंत्रक के साथ तेज़ है। धीमी वातावरण केवल वर्कग्रुप है, इसलिए इसे किसी भी चीज़ तक नहीं पहुंचना चाहिए। मैं वायरसर्क को यह देखने के लिए कोशिश कर सकता हूं कि क्या मैं कुछ असामान्य हूं। – Mayo

उत्तर

19

मुझे एक ही समस्या थी। कोड के नीचे ब्लॉक का प्रयास करें। मुझे नहीं पता क्यों, लेकिन यह बहुत तेज है (वीएस में निर्माण के बाद पहली बार धीमी लॉगिन को अनदेखा करें - बाद के लॉग इन तेज़ी से हैं)। इसी तरह देखें तो सवाल Why would using PrincipalSearcher be faster than FindByIdentity()?

var context = new PrincipalContext(ContextType.Machine); 
var user = new UserPrincipal(context); 
user.SamAccountName = username; 
var searcher = new PrincipalSearcher(user); 
user = searcher.FindOne() as UserPrincipal; 

अंतर्निहित मुद्दे NetBIOS कॉल के साथ कुछ हो सकता है। ADLDS very slow (roundtrip to \Server*\MAILSLOT\NET\NETLOGON)

+1

धन्यवाद। यह मेरे लिए काम किया। – ahmd0

+0

मेरे लिए भी काम किया। धन्यवाद! –

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