2010-03-23 10 views
6

आज मैं एक अजीब व्यवहार में आया/w/मेरा वेब एप्लिकेशन। जब मैं किसी पृष्ठ से दूसरे पृष्ठ पर नेविगेट करता हूं, तो मैं एक विशेष सत्र परिवर्तनीय डेटा खो देता हूं।एएसपी.Net सत्र डेटा पृष्ठों के बीच खो गया

मैं ऐप को फ़ायरफ़ॉक्स में लॉन्च करने में सक्षम हूं और यह देखने में सक्षम हूं कि सत्र डेटा खो नहीं गया है।

मैं किसी अन्य पृष्ठ पर रीडायरेक्ट करने के लिए Response.Redirect(page2, false) का उपयोग करता हूं।

कोड नीचे सत्र चर

System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\test.txt", true); 
for (int i = 0; i < Session.Count; i++) 
{ 
sw.WriteLine(Session.Keys[i] + " " + Session.Contents[i]); 
} 
sw.Close(); 

किसी को भी मुझे इस में मदद कर सकते हैं ट्रैक करने के लिए इस्तेमाल किया गया था? किसी भी मदद की सराहना की है।

+0

में आपका स्वागत है हां, तो कृपया कुछ मिनट लग करने के लिए पूछे जाने वाले प्रश्न और Markdown प्रलेखन (एक सवाल को संपादित करते समय एक उपयोगी synposis जो के दाहिने हाथ की मार्जिन में उपलब्ध है) को पढ़ने के लिए। – AnthonyWJones

+0

वास्तव में क्या हो रहा है और आप क्लाइंट साइड (फ़ायरफ़ॉक्स) पर सर्वर साइड सत्र चर को कैसे देख सकते हैं? आप वास्तव में क्या उपयोग कर रहे हैं, और आपने यह सुनिश्चित करने के लिए web.config की जांच की है कि सत्र टाइमआउट 0 नहीं है? –

उत्तर

0

क्या आप वेब फार्म/वेब बगीचे के माहौल में विकास कर रहे हैं?

+0

वेब खेत/वेब उद्यान पर्यावरण में कोई विकास नहीं हो रहा है – Ananth

0

state server mode का उपयोग करने का प्रयास करें। इस पर निर्भर करता है कि आपका एप्लिकेशन पूल कैसे कॉन्फ़िगर किया गया है और आपके परिनियोजन डिफ़ॉल्ट इन-प्रोसेस मोड अप्रत्याशित हो सकता है।

+0

मैं राज्य सर्वर मोड का प्रयास कर सकता हूं लेकिन चूंकि यह कोड (इनप्रोक मोड के साथ) लंबे समय तक था और 3 अन्य वातावरण में भी मौजूद था, मैं इसे बदल नहीं सकता। लेकिन, मुझे नहीं पता कि यह समस्या अब क्यों दिखाई दे रही है – Ananth

+0

तब कुकीज़ के बारे में क्या? इसे फिडलर के साथ देखें और/या सत्र आईडी को परिवर्तनों के लिए देखें। – ziya

3

मुझे बिल्कुल वही समस्या थी और मेरे मामले में मुझे इस व्यवहार का कारण मिला। यह पता चला कि जब मैं Response.Redirect() विधि का आह्वान कर रहा था, तो मैं केवल पृष्ठ के नाम के बजाय पूर्ण यूआरएल का उपयोग कर रहा था। तो जब मैं localhost/myapp/page1.aspx में था, तो मैंने MYMACHINENAME/myapp/page2.aspx पर रीडायरेक्ट किया और यही कारण है कि सत्र प्रत्येक पृष्ठ के लिए अलग थे। मैंने इसे केवल "पेज 2.aspx" का उपयोग करके अपने कोड में सही किया और फिर किसी भी ब्राउज़र (आईई, फ़ायरफ़ॉक्स) पर अंतिम यूआरएल लोकलहोस्ट/मैप/पेज 2.aspx था। पता नहीं है कि आप यूआरएल के साथ खेल रहे हैं या नहीं। यह कर रहा था लेकिन शायद यह जवाब आपको एक सुराग दे सकता है। धन्यवाद और अच्छा कोडिंग

0

मेरे समस्या इस प्रकार है: -

समस्या: जब हम आईआईएस 7.5 के साथ एक अन्य सर्वर (Windows Server 2008 R2) के लिए ASP.NET अनुप्रयोग स्थानांतरित कर दिया, आवेदन सत्र मूल्यों स्थानांतरित नहीं कर सकते पृष्ठों के बीच। जैसे सत्र मान पहले पृष्ठ पर सेट किया गया था लेकिन यह अगले पृष्ठ पर नहीं जा सका। अगले पृष्ठ में, समान सत्र चर के लिए मान शून्य आ रहा था।

सत्र मूल्य Google क्रोम और फ़ायरफ़ॉक्स के मामले में अगले पृष्ठ पर जा रहे थे लेकिन इंटरनेट एक्सप्लोरर में नहीं।

संकल्प: हमने "_" (अंडरस्कोर) के साथ यूआरएल नाम बनाया है उदा। http://MySite_test.com। "_" को हटाने के बाद, यह आवश्यकतानुसार काम करता है उदा। http://MySitetest.com

अन्य संभावित समाधान: के रूप में "गलत" दूसरा पैरामीटर होने पेज के निष्पादन से बचने के लिए और इस तरह खो सत्र टोकन से बचने के लिए साथ

  1. उपयोग Response.Redirect। आपको यूआरएल का उपयोग निम्नानुसार करना है। Response.Redirect ("NextPage.aspx", झूठा)

  2. यदि साइट का एप्लिकेशन पूल वेब फार्म या वेब गार्डन के रूप में कॉन्फ़िगर किया गया है (अधिकतम कार्यकर्ता प्रक्रियाओं को अधिकतम एक से अधिक में सेट करके), और यदि आप सत्र सेवा या SQL सत्र का उपयोग नहीं कर रहे हैं, तो आने वाले अनुरोध अप्रत्याशित रूप से कार्यकर्ता प्रक्रियाओं में से एक पर जाएंगे, और यदि यह सत्र नहीं बनाया गया था, तो यह खो गया है। इस समस्या का समाधान या तो वेब बाग का उपयोग नहीं करना है यदि आपको प्रदर्शन को बढ़ावा देने की आवश्यकता नहीं है, या प्रक्रिया सत्र प्रदाताओं में से किसी एक का उपयोग करें।

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