2012-10-08 14 views
5

हम एक ashx छवि हैंडलर जो काफी अच्छी तरह से पिछले कुछ वर्षों में प्रदर्शन किया है लटका है, लेकिन हम हाल ही में में कुछ अजीब रुक-रुक कर व्यवहार देखा है IE8 के कारण और आईई 9। हमारे पास एक गैलरी पृष्ठ है जो छवि के हैंडलर को छवि के स्रोत विशेषता के हिस्से के रूप में कई बार कॉल करता है, यह पृष्ठ पॉप-अप विंडो में खोला जाता है।एकाधिक छवि हैंडलर कॉल IE में पॉप-अप विंडो

पृष्ठ ठीक काम करता है, जब खिड़की खोला जाता है और त्वरित उत्तराधिकार में बंद हो जाता है (पृष्ठ पर सभी छवियों को लोड करना समाप्त हो जाता है) इससे ब्राउज़र को लटकने का कारण बनता है और बाद में इसे पुनरारंभ करना पड़ता है।

हमारे छवि हैंडलर कोड का नमूना निम्नलिखित है, मुझे संदेह है कि विंडो बंद होने पर छवि का अनुरोध 'समाप्त' नहीं होता है और ब्राउज़र और सर्वर के बीच कनेक्शन अभी भी चल रहा है और इसका कारण बन रहा है दुर्घटना के लिए।

लॉग को देखते हुए वहाँ हैंडलर के माध्यम से एक ही छवि को पाने के लिए तो यह लग रहा है ब्राउज़र की तरह पुन: प्रयास है, क्योंकि यह सोचता है कि यह अनुरोध को पूरा करने में नाकाम रही है कई प्रयास कर रहे हैं।

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

एलोस नोट: छवियों को प्रदर्शित करने वाले पेज में ग्रिड के आस-पास एक अद्यतन पैनल है - लेकिन मुझे नहीं लगता कि यह संबंधित है।

Response.Clear(); 
Response.ContentType = "image/jpeg"; 
System.Drawing.Image returnImage = System.Drawing.Image.FromFile(completeImageFilePath); 
using (MemoryStream stream = new MemoryStream()) 
{ 
    returnImage.Save(stream, ImageFormat.Jpeg); 
    stream.WriteTo(Response.OutputStream); 
} 
returnImage.Dispose(); 
if (Response.IsClientConnected) 
{ 
    Response.Flush(); 
} 
Response.End(); 

उत्तर

1

आप लपेटकर की कोशिश की एक कि .dispose "यह सुनिश्चित करने के लिए" के आसपास returnImage का उपयोग कर() कहा जाता है है?

Response.Clear(); 
Response.ContentType = "image/jpeg"; 
using (System.Drawing.Image returnImage = System.Drawing.Image.FromFile(completeImageFilePath)) 
{ 
    using (MemoryStream stream = new MemoryStream()) 
    { 
     returnImage.Save(stream, ImageFormat.Jpeg); 
     stream.WriteTo(Response.OutputStream); 
    } 
} 
if (Response.IsClientConnected) 
{ 
    Response.Flush(); 
} 
Response.End(); 
+0

वापसी छवि के लिए _using_ बयान पर @buUKaneer अच्छी कॉल, मुझे लगता है कि परिवर्तन कर दिया है, लेकिन समस्या अभी भी होती है। मैं अभी भी यह देखने के लिए खुदाई कर रहा हूं कि क्या मैं और जानकारी का पता लगा सकता हूं। धन्यवाद। – Mitul

+0

क्या आपने एक ही समय में फिडलर चलाने की कोशिश की है और कच्चे अनुरोध/प्रतिक्रिया डेटा को देख रहे हैं - वास्तव में क्या हो रहा है पर कुछ प्रकाश डाल सकता है? – bUKaneer

+0

फ़िडलर का उपयोग करने से पहले आखिरी अनुरोध को प्रोफ़ाइल करने के लिए पॉपअप विंडो के भीतर एक पोस्ट है, अनुरोध पिछले POST अनुरोधों से मेल खाता है जो सफलतापूर्वक पूर्ण हो जाता है। अब मैं सोच रहा हूं कि यह आईई के मेमोरी मैनेजमेंट या इस तथ्य के साथ कुछ करने के लिए है कि विंडो पॉप अप के बीच तेज़ एकाधिक अनुरोधों को संभालने में यह बहुत अच्छा नहीं है। अभी भी खुदाई कर रहा है ... – Mitul

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