2012-01-19 13 views
15

मैं इस तरह कोड है:मतभेद()

context.HttpContext.Response.Clear(); 
      context.HttpContext.Response.Write(htmlString);    
      context.HttpContext.Response.End(); 

लेकिन जब पृष्ठों लोड किए गए हैं मैं उन पर खुली हुई HTML टैग की है। जब मैं Response.El() को Response.Flush() से प्रतिस्थापित करता हूं तो यह ठीक काम करता है। Response.End() और Response.Flush() के बीच क्या अंतर है?

उत्तर

17

Response.Flush

बलों सभी वर्तमान बफ़र उत्पादन ग्राहक को भेजा जाना है। अनुरोध प्रक्रिया के दौरान फ्लश विधि को कई बार बुलाया जा सकता है।

Response.End

, ग्राहक के लिए सभी वर्तमान बफ़र उत्पादन भेजता के निष्पादन के पेज बंद हो जाता है, और EndRequest घटना उठाती है।

यदि आप Response.Write के बाद पृष्ठ पर कोई प्रसंस्करण नहीं कर रहे हैं और पृष्ठ को संसाधित करना चाहते हैं तो आपको इस कोड का उपयोग करने का प्रयास करना चाहिए।

context.HttpContext.Response.Clear(); 
    context.HttpContext.Response.Write(htmlString);    
    context.HttpContext.Response.Flush(); // send all buffered output to client 
    context.HttpContext.Response.End(); // response.end would work fine now. 
+0

मुझे उत्सुकता है कि 'अंत()' से पहले 'फ्लश()' को कॉल करना वास्तव में आवश्यक है? आपके द्वारा प्रदान की जाने वाली परिभाषाओं से, 'एंड' पृष्ठ निष्पादन को रोकने और' EndRequest' को बढ़ाने से पहले 'फ्लश' जैसी ही चीज करता है ... तो 'अंत() 'से पहले' फ्लश()' को कॉल करना समझदारी क्यों है? –

+4

कभी नहीं, मेरे पास मेरे कोड में एक जटिल सेटअप है जिसमें उपरोक्त कोड शामिल है और जब मैं 'फ्लश()' को हटा देता हूं तो मुझे अपवाद मिलते हैं कि थ्रेड को निरस्त किया जा रहा है। –

+1

दिखाए गए दस्तावेज़ीकरण से ऐसा प्रतीत होता है कि आपको अंत से पहले फ्लश को कॉल करने की आवश्यकता नहीं है, लेकिन अभ्यास में सभी प्रकार की त्रुटियां तब होती हैं जब फ्लश के बिना अंत को कॉल किया जाता है। – Roland

0

विधि MVC में दस्तावेज़ फ़ाइलों को डाउनलोड करने

Response.ContentType = "application/octet-stream"; 
      Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);     
      Response.TransmitFile(Server.MapPath(ConfigurationManager.AppSettings["JICDocumentUploads"] + ProspectCode + "\\" + FileName)); 
      Response.End(); 
  • JICDocumentUploads: यह डाउनलोड दस्तावेज़
  • फ़ाइल के लिए अद्वितीय कोड है: यह फ़ाइल से web.config
  • ProspectCode आ पथ को बचाने है नाम:
डाउनलोड करने के लिए चयनित फ़ाइल
+0

'Response.End() 'और' Response.Flush() 'के बीच के अंतर के बारे में मूल प्रश्न के साथ क्या करना है? – dr0i

+0

यह सवाल का जवाब नहीं देता है, यह विषय से पूरी तरह से बंद है – WhatsThePoint

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