2010-06-07 17 views
9

मेरे पास एक एएसपी.नेट वेब ऐप है। मैंने देखा है कि एक साधारण AJAX कॉल (नीचे देखें) प्रक्रिया में है, वेब एप्लिकेशन किसी भी ब्राउज़र पर कोशिश की जाने वाली किसी भी कार्रवाई का जवाब नहीं देता है।एजेक्स कॉल में कार्रवाई करते समय ब्राउज़र फ्रीज

$.ajax({ 
     type: "GET", 
     async: true, 
     url: "someurl", 
     dataType: "text", 
     cache: false, 
     success: function(msg){ 
      CheckResponse(msg); 
     } 
    }); 

ऐसा होता है जब मैं दो फ़ायरफ़ॉक्स या दो आईई खोलता हूं। मैं उस फ़ंक्शन को चलाता हूं जो पहले ब्राउज़र पर AJAX कॉल करता है और जब तक AJAX की प्रतिक्रिया वापस नहीं आती है, मैं उसी साइट पर दूसरे ब्राउज़र पर कुछ भी नहीं कर सकता। प्रारंभिक AJAX पूरा होने तक दूसरे ब्राउज़र से सर्वर पर कोई ब्रेकपॉइंट नहीं मारा जाता है। यह किसी भी क्लिक आदि के लिए लटकता है ..

पहले ब्राउज़र पर अजाक्स कॉल पूरा होने के तुरंत बाद दूसरे ब्राउज़र पर लटका समाप्त होता है।

यह व्यवहार तब नहीं देखा जाता है जब मैं आईई और फ़ायरफ़ॉक्स की तरफ से कोशिश करता हूं। केवल आईई & आईई या एफएफ & एफएफ पक्ष के साथ

प्रशंसा करें यदि आप मेरी मदद कर सकते हैं कि मैं यहां क्या खो रहा हूं, तो सराहना करें।

+1

क्या आप 'CheckResponse()' या उस व्यवहार के स्रोत के रूप में स्थानांतरित डेटा की मात्रा को खत्म कर सकते हैं? – jAndy

+0

उन्मूलन और समस्या बनी रहती है – kaivalya

+0

जब आप "साइड बाय साइड" कहते हैं, तो क्या आप एक ही कंप्यूटर, या दो अलग-अलग कंप्यूटरों पर हैं? यदि एक ही कंप्यूटर पर, आप ब्राउज़र की दो प्रतियां कैसे शुरू कर रहे हैं? – Pointy

उत्तर

1

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

इसके अलावा, दो अलग-अलग ब्राउज़रों का उपयोग करते समय, आपका सर्वर प्रत्येक ब्राउज़र को एक अलग क्लाइंट के रूप में देखता है, जिसका अर्थ है कि यह प्रति ब्राउज़र एक अनुरोध को संसाधित करेगा। मुझे नहीं पता कि क्लाइंट की पहचान करने के लिए वास्तव में किस जानकारी का उपयोग किया जाता है (मेरा अनुमान आईपी पता + ब्राउज़र संस्करण होगा, लेकिन मैं यहां बहुत गलत हो सकता हूं)

कोई और आपको यह बता सकता है कि अपाचे को कैसे कॉन्फ़िगर करना है इस समस्या के आसपास काम करते हैं; दुर्भाग्य से मैं इसे खुद नहीं जानता। हालांकि जावास्क्रिप्ट/अजाक्स के साथ समस्या झूठ नहीं है; यह सर्वर द्वारा लगाए गए एक सीमा है, क्लाइंट नहीं।

+0

ऐसा लगता है * मेरे लिए * अत्यधिक * असंभव है। – Pointy

+2

@ पॉइंटी: यह वही है जो मैंने पुराने विकास सर्वर पर किया था। किसी भी कारण से सर्वर ने किसी भी ग्राहक से एक से अधिक अनुरोधों को संसाधित करने से इंकार कर दिया। जब आप भारी निर्यात स्क्रिप्ट लिख रहे हों तो अत्यधिक परेशान होना जो चलाने में 5 मिनट लग सकते हैं। "शुरुआती AJAX पूरा होने तक सर्वर पर किसी भी ब्रेकपॉइंट्स को हिट नहीं किया जाता है। यह किसी भी क्लिक आदि के लिए लटकता है .." यह मुझे बताता है कि ब्राउजर फ्रीज या लटकता नहीं है, यह बस सर्वर से प्रतिक्रिया की प्रतीक्षा कर रहा है । – Duroth

0

"someurl" किसी भी दिए गए सत्र के लिए पहले अनुरोध को पूरा करने तक सर्वर पर अवरुद्ध कर रहा है। जब आपके पास पूरी तरह से अलग ब्राउज़र होते हैं तो समस्या प्रकट नहीं होती है क्योंकि उस परिदृश्य में दो अलग-अलग ASP.NET सत्र होते हैं। डिज़ाइन द्वारा, एएसपी.नेट अनुरोध क्यूइंग करता है जब एक ही ग्राहक संसाधनों के लिए कई अनुरोध करता है जो सत्र (लिखने के लिए डिफ़ॉल्ट) में लिखने में सक्षम होने के लिए कॉन्फ़िगर किए जाते हैं। आपके विवरण के आधार पर, यह क्या हो रहा है।

समाधान:

  • एक पेज के लिए, आप @ Page निर्देश के लिए EnableSessionState="false" या EnableSessionState="ReadOnly" जोड़ सकते हैं।
  • एक सामान्य हैंडलर के लिए, आप IRequiresSessionState को हटाकर या IReadOnlySessionState के साथ इसे हटाकर समस्या का समाधान कर सकते हैं।
संबंधित मुद्दे