2012-09-04 18 views
6

वेबसाइट जहां मैं काम करता हूं कई परियोजनाओं से बना है (कई भाषाओं में लिखा गया है)। प्रोजेक्ट से प्रोजेक्ट में जाने पर व्यक्ति को लॉग इन रखने के लिए अभी हमें क्वेरी स्ट्रिंग्स और सत्र चर में कुछ अजीब कोड का उपयोग करना होगा। चूंकि कुकीज़ डोमेन विशिष्ट हैं, इसलिए हम उन्हें बदलने की कोशिश कर रहे हैं क्योंकि उन्हें एक प्रोजेक्ट में एक भाषा का उपयोग करके सेट किया जा सकता है, फिर भी एक अलग भाषा का उपयोग करके एक अलग परियोजना (उसी डोमेन पर) तक पहुंचा जा सकता है।कुकीज़ एएसपी.नेट में कैसे काम करती है?

हालांकि मुझे कुकी के मूल्य को बदलने और उन्हें हटाने में समस्याएं आ रही हैं। या अधिक विशिष्ट होने के लिए, मुझे कुकी स्टिक में किए गए कोई भी बदलाव होने में परेशानी हो रही है।

मेरी लॉगआउट कोड में उदाहरण के लिए:

if (Request.Cookies["thisuserlogin"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("thisuserlogin"); 
    myCookie.Value = String.Empty; 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
    Response.Cookies.Set(myCookie); 
    litTest.Text = myCookie.Expires.ToString() + "<br />" + Request.Cookies["thisuserlogin"].Expires.ToString(); 
} 

मैं एक पंक्ति कल और अगली पंक्ति 1/1/0001 00:00:00 जा रहा है, भले ही वे एक ही कुकी होना चाहिए होने के साथ हवा। तो यह क्यों है कि कुकी सेट होने के बावजूद, यह मूल्य बदल नहीं गया? क्या उपयोगकर्ता के कंप्यूटर को कुकी के मूल्य को अपडेट करने के लिए मजबूर करने का कोई तरीका है, जिसमें हटाना शामिल है?

बहुत बहुत धन्यवाद। पीएस कुकीज़ के लिए एक आसान समझने वाला प्राइमर देने के लिए आप जो भी यूआरएल प्रदान कर सकते हैं, उसकी सराहना की जाएगी।

+2

मैं शीर्षक संपादित क्योंकि कुकीज़ विशिष्ट नहीं सी # कर रहे हैं। एएसपी.नेट अधिक उपयुक्त है। – usr

उत्तर

0

आपको क्लाइंट साइड पर Fiddler जैसे टूल का उपयोग करना चाहिए ताकि सभी डेटा आगे और आगे जा सकें। यह आपको यह देखने में मदद करेगा कि आपकी कुकी को अतीत में एक तिथि के साथ सेट किया जाना चाहिए (और अगले अनुरोध से भी अनुपलब्ध)।

आपके टेक्स्टबॉक्स आउटपुट के लिए, आप उस कुकी को सूचीबद्ध कर रहे हैं जिसकी आपने समय समाप्त कर दिया है और अनुरोध का समय समाप्त हो गया है कुकी, जिसमें कोई नहीं है। यदि आप इसके बजाय प्रतिक्रिया कुकी को देखना चाहते हैं, तो आपको सेट की तारीख को देखना चाहिए। साथ ही, Response.Cookies.Set पर कॉल अनावश्यक है। Response.Cookies.Add आपको बस इतना चाहिए।

+0

फिडलर शस्त्रागार – NickSuperb

+0

के लिए एक अच्छा उपकरण है I समझ में नहीं आता है। क्योंकि मैं एड कमांड का उपयोग कर रहा हूं, क्या आउटपुट में दो कुकीज़ एक विशिष्ट समाप्ति तिथि के साथ एक ही कुकी नहीं होनी चाहिए? और यदि सेट कमांड अनावश्यक है, तो वहां क्यों है? – Alverant

+0

एएसपी से एएसपी.Net (वास्तव में वीबी.Net) से कोड लेते समय संगतता बनाए रखने के लिए सेट है, जैसे [Response.End] (http://msdn.microsoft.com/en-us/library/system.web .httpresponse.end.aspx) (गलत, अगली टिप्पणी देखें)। क्यों वे नहीं बदलते हैं, इस तरह इसे देखो। आपके अनुरोध कुकीज़ में एक कुकी है (जो क्लाइंट से आई थी)। आप एक ही नाम के साथ एक ब्रांड नई कुकी बनाते हैं और इसे प्रतिक्रिया कुकीज़ में डालते हैं (जो क्लाइंट पर जाएगा)। इस बिंदु पर, भले ही उनके पास एक ही नाम है, वे दो पूरी तरह से अलग कुकीज़ हैं और विभिन्न वस्तुओं को इंगित करते हैं। – Joshua

1

http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx

if (Request.Cookies["thisuserlogin"] != null) 
{ 
    HttpCookie byeCookie = new HttpCookie("thisuserlogin"); 
    byeCookie.Expires = DateTime.Now.AddDays(-1); 
    Response.Cookies.Add(byeCookie); 

    // Update Client 
    Response.Redirect(Request.RawUrl); 
} 
+0

मैं डोमेन पर सभी कुकीज़ को हटा नहीं सकता। मुझे विशिष्ट कुकीज़ को हटाने और उन्हें हटाए जाने की आवश्यकता है, जैसा कि मेरे उदाहरण में उल्लेख किया गया है, ऐसा नहीं हो रहा है। – Alverant

+0

तब बहुत आसान है। – NickSuperb

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