निम्न कोड हमारे डोमेन पर विभिन्न मशीनों से ठीक काम करता है।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 ऐप से चल रहा है।
यदि आप नेटवर्क मॉनिटर या वायरशर्क से परिचित हैं, तो आप नेटवर्क पैकेट को कैप्चर कर सकते हैं यह देखने के लिए कि प्रत्येक बार यह क्वेरी निष्पादित होने पर डोमेन नियंत्रकों से बात करने में कितना समय लगता है। यह आपको कुछ संकेत दे सकता है। यह केवल एक सक्रिय निर्देशिका पक्ष मुद्दा है, आपके कोड में कुछ भी गलत नहीं है। –
केवल अनोखी बात यह है कि यह डोमेन नियंत्रक के साथ तेज़ है। धीमी वातावरण केवल वर्कग्रुप है, इसलिए इसे किसी भी चीज़ तक नहीं पहुंचना चाहिए। मैं वायरसर्क को यह देखने के लिए कोशिश कर सकता हूं कि क्या मैं कुछ असामान्य हूं। – Mayo