जब आप ASP.NET में अपलोड की गई फ़ाइल प्राप्त करते हैं, तो आप आमतौर पर HttpPostedFile
ऑब्जेक्ट के माध्यम से ऐसा करते हैं। प्राप्त डेटा HttpPostedFile.InputStream
के माध्यम से उपलब्ध कराया गया है। यह एक संपत्ति है, जो मुझे विश्वास दिलाती है कि मुझे इसे स्वयं निपटाने की आवश्यकता नहीं है, हालांकि दस्तावेज कभी भी उल्लेख नहीं करता है कि धारा का निपटान करने के लिए ज़िम्मेदार है, और यदि यह एएसपी.नेट फ्रेमवर्क द्वारा किया जाता है, जब ऐसा करता है (कहो, क्या मैं सत्र में स्ट्रीम को सहेज सकता हूं, क्या मुझे चाहिए?)।HttpPostedFile.InputStream का निपटान करने के लिए कौन जिम्मेदार है - और कब?
अब, मुझे उन कई फाइलें नहीं मिलती हैं, और मैंने इस विशेष धारा का निपटान न करने के लिए समस्याओं में भाग नहीं लिया है, लेकिन स्वच्छता के लिए - क्या किसी को पता है कि यहां डिज़ाइन अनुबंध क्या है?
मान्य है, सत्र में चीज संग्रह करना एक बुरा विचार की तरह लगता है; मैं केवल एक उदाहरण खोजने की कोशिश कर रहा था जहां धारा के सटीक जीवनकाल को जानना प्रासंगिक होगा। शायद एक बेहतर उदाहरण पृष्ठभूमि कार्यकर्ता को छवि को संसाधित करने और सहेजने और अग्रभूमि में वेबरेक्वेस्ट के साथ जारी रखने के लिए शुरू करेगा - वेब अनुरोध कार्यकर्ता के समक्ष पूरा हो सकता है, इसलिए आपको यह जानना होगा कि स्ट्रीम ठीक से अमान्य हो जाती है। किसी भी मामले में, मुझे लगता है कि आप सही हैं - हालांकि मैंने इस पर माइक्रोसॉफ्ट से बेहतर दस्तावेज़ों की सराहना की होगी (जैसा कि कई आईडीस्पोजेबल मुद्दों पर है)। –
भले ही आप इसे पृष्ठभूमि प्रक्रिया में सौंपना चाहते हैं ... जो करना बहुत अच्छा है ... मैं अभी भी फ़ाइल को फाइल सिस्टम में सहेजता हूं और उदाहरण को पास करने के बजाए फ़ाइल को आपके पृष्ठभूमि थ्रेड में संदर्भित करता हूं धारा का –
यह देखते हुए कि इनपुटस्ट्रीम मेरे नियंत्रण से बाहर है, मैं निश्चित रूप से ऐसा कुछ करूँगा - लेकिन सामान्य रूप से, बाधाओं से बचने के लिए, मैं अस्थायी डिस्क पहुंच से बचना पसंद करता हूं - और अस्थायी बाइट सरणी के बावजूद अस्थायी कोई समस्या नहीं है। जानकारी के लिए धन्यवाद, किसी भी तरह! –