2013-01-22 18 views
8

मैं एक कुकी के पथ सेट करने के लिए कोशिश कर रहा हूँ लेकिन मैं हमेशा त्रुटि प्राप्त कर रहा हूँ।CookieException: कुकी के</p> <p><code>CookieException: The 'Path'='/applogin'</code> हिस्सा अमान्य है: 'पथ' कुकी का हिस्सा अवैध

कोड इस तरह दिखता है:

Cookie newCookie = new Cookie("JSESSIONID", session.SessionId, "/applogin", "domain.com"); 
newCookie.Secure = true; 
webRequest.CookieContainer.Add(new Uri(@"https://domain.com"), newCookie); 

अपवाद तो है throwen अंतिम पंक्ति पर ... किसी को भी सही दिशा में मुझे बात कर सकते हैं?

उत्तर

0

कुछ ब्राउज़रों में, पथ केस संवेदनशील है। सुनिश्चित करें कि "/ applogin" के सभी संदर्भ बिल्कुल मामले से मेल खाते हैं।

http://msdn.microsoft.com/en-us/library/ms178194%28v=vs.85%29.aspx

+1

यूआरएल पथ * हमेशा * केस संवेदनशील है। – Gumbo

+1

विंडोज वेब सर्वर केस असंवेदनशील हैं जबकि लिनक्स/यूनिक्स केस संवेदनशील हैं। ऐसा इसलिए है क्योंकि विंडोज़ फ़ाइल सिस्टम केस असंवेदनशील है जबकि लिनक्स/यूनिक्स केस संवेदनशील है। हालांकि, कुकी अनुरोध करने पर ब्राउज़र कभी भी सर्वर पर कुकी पथ नहीं भेजता है, यह तुलना करता है कि सर्वर नाम/मूल्य जोड़े से क्या करता है। मेरा मानना ​​है कि सभी ब्राउज़र इस बारे में संवेदनशील हैं, लेकिन मैं निश्चित नहीं हूं। –

+0

यूआरएल पथ केस असंवेदनशील हैं, इससे कोई फर्क नहीं पड़ता कि कैसे एक वेब सर्वर सिस्टम पथ को फाइल करने के लिए यूआरएल पथ मैप करने का फैसला करता है। – Gumbo

8

अपने मामले में आप दो यूआरएल है: एक एक https://domain.com है और दूसरा एक एक https://domain.com/applogin है। आइए मान लें कि कुकी कोंटेनर में पथ/एप्पलिन के लिए आपकी कुकी शामिल है। इसका अर्थ यह है कि यदि आप यूआरएल https://domain.com/applogin के लिए कुकीज़ की सूची पुनर्प्राप्त करने का प्रयास करेंगे - आपको एक कुकी मिल जाएगी। यदि आप url https://domain.com के लिए कुकीज़ पुनर्प्राप्त करने का प्रयास करेंगे - आपको 0 कुकीज़ मिल जाएगी।

अब चलिए अपने नमूने को देखें। आपके पास https://domain.com/applogin के लिए एक कुकी है और आप इसे url https://domain.com के लिए कुकी कंट्रोलर में जोड़ने का प्रयास कर रहे हैं। कुकी कोंटेनर सत्यापित करता है कि इस कुकी का उपयोग विशिष्ट यूआरएल के लिए नहीं किया जा सकता है, क्योंकि यह विभिन्न यूआरएल के लिए समस्या थी। आपके मामले में आप जहां कुकी जोड़ने लाइन को बदलने की जरूरत:

webRequest.CookieContainer.Add(new Uri(@"https://domain.com/applogin"), newCookie); 

या मुझे लगता है कि आप पूरे domain.com के लिए इस कुकी का उपयोग करना चाहते हैं - तो आप को बदलने के लिए आप इसे कैसे

Cookie newCookie = new Cookie("JSESSIONID", session.SessionId, "/", "domain.com"); 
को बनाने की जरूरत है