क्लासिक एएसपी सत्र ऑब्जेक्ट के व्यवहार से मेल खाने के लिए HttpSessionState की कुंजी केस-असंवेदनशील बना दी गई थीं। इसने डेवलपर्स के लिए सूक्ष्म केस-सेंसिटीविटी मुद्दों को पेश किए बिना एएसपी.NET को अपने एएसपी अनुप्रयोगों को पोर्ट करना आसान बना दिया।
वही मामला-असंवेदनशील-कुंजी व्यवहार QueryString, कुकीज़, आदि ऑब्जेक्ट्स और अन्य समान-से-क्लासिक-एएसपी अंतर्निर्मित वस्तुओं के बारे में सच है।
मैं माइक्रोसॉफ्ट में आईआईएस टीम पर था जब एएसपी.नेट डिजाइन किया गया था, और एएसपी.नेट ने एएसपी.NET कोड को जहां भी संभव हो एएसपी के अनुकूल संगत रखने के लिए कड़ी मेहनत की। इसका मतलब यह नहीं है कि एएसपी.नेट के पास पिछली पिछली संगतता थी, लेकिन जब भी कोई निर्णय आया (इस मामले की संवेदनशीलता की तरह), डिफ़ॉल्ट जवाब क्लासिक एएसपी व्यवहार से मेल खाना था जब तक कि कोई अच्छा कारण न हो।
यह कहा गया कि, मैं मानता हूं कि सत्र की स्थिति-असंवेदनशीलता बेहतर दस्तावेज हो सकती है।
बीटीडब्ल्यू, एएसपी.नेट सत्र संग्रह NameObjectCollectionBase से अपना केस व्यवहार प्राप्त करता है जो कुकीज़, सत्र राज्य, आवेदन राज्य, शीर्षलेख इत्यादि के लिए सभी एएसपी.NET अंतर्निर्मित वस्तुओं के लिए आधार वर्ग है। दस्तावेज़ों से:
इस कक्षा के लिए अंतर्निहित संरचना एक हैश तालिका है।
प्रत्येक तत्व एक कुंजी/मूल्य जोड़ी है।
एक NameObjectCollectionBase की क्षमता तत्वों NameObjectCollectionBase धारण कर सकते हैं की संख्या है। तत्वों को नामऑब्जेक्ट कोलेक्शनबेस में जोड़ा गया है, क्षमता स्वचालित रूप से को पुनर्वितरण के माध्यम से आवश्यक रूप से बढ़ा दी गई है।
हैश कोड प्रदाता हैश NameObjectCollectionBase उदाहरण में चाबी के लिए कोड वितरित। डिफ़ॉल्ट हैश कोड प्रदाता CaseInsensitiveHashCodeProvider है।
तुलनाकर्ता निर्धारित करता है कि दो कुंजी बराबर हैं या नहीं। डिफ़ॉल्ट तुलनाकर्ता केसइन्सेंसिव कॉम्पैडर है।
.NET Framework संस्करण 1 में।0, यह वर्ग संस्कृति-संवेदनशील स्ट्रिंग तुलना का उपयोग करता है। हालांकि, .NET फ्रेमवर्क संस्करण 1.1 और बाद में, यह कक्षा संस्कृतिइन्फो का उपयोग करती है .. :: InvariantCulture स्ट्रिंग की तुलना में। कैसे संस्कृति तुलना प्रभावित करता है और छँटाई के बारे में अधिक जानकारी के लिए , और छंटाई डेटा की तुलना एक विशिष्ट संस्कृति एक विशिष्ट Cultureand प्रदर्शन संस्कृति-संवेदी स्ट्रिंग ऑपरेशन तुलना और के लिए छंटाई डाटा के लिए देखते हैं।
एक उचित अनुवर्ती प्रश्न होगा: क्लासिक एएसपी केस-असंवेदनशील कुंजी के साथ क्यों बनाया गया था? इसका कारण यह है कि, 1 99 6 में (या वहां) एएसपी के साथ उपयोग की जाने वाली मुख्य भाषा वीबीस्क्रिप्ट थी, इसलिए वीबी डेवलपर्स के केस-असंवेदनशील उम्मीदों को पूरा करने के लिए यह समझ में आया।
उत्कृष्ट उत्तर के लिए धन्यवाद (पृष्ठभूमि के साथ!)। –
अरे जस्टिन, मैं इस व्यवहार को .NET परावर्तक में देखने की कोशिश कर रहा था - अंतर्निहित स्टोर हैशटेबल है - ऐसा लगता है कि यह सीधे प्राप्त/सेट पास-थ्रू है। मुझे कोई कोड नहीं मिला जो इसे इस तरह से कार्य करेगा। क्या आप एक लिंक (वेब) या सूचक प्रदान कर सकते हैं? –
ऊपर देखें। मैंने और जानकारी जोड़ा। हो जाता है और सेट्स गुजरते हैं, लेकिन हैश कोड प्रदाता का उपयोग केस-असंवेदनशील है, इसलिए अपरकेस और लोअरकेस एक ही हैश कोड उत्सर्जित करते हैं। –