स्ट्रीम को बंद करना आवश्यक है मेरे पास एक विधि के साथ एक सेवा इंटरफ़ेस है जिसमें Stream
प्रकार का पैरामीटर है। क्या मुझे इस स्ट्रीम से सभी डेटा पढ़ने के बाद स्ट्रीम बंद करनी चाहिए या क्या यह विधि कॉल पूरा होने पर डब्ल्यूसीएफ रनटाइम द्वारा किया जाता है?क्या वेब इनवोक विधि
मैंने जो उदाहरण देखा है, केवल स्ट्रीम से डेटा पढ़ते हैं, लेकिन स्ट्रीम पर बंद या निपटान न करें।
आम तौर पर मैं कहूंगा कि मुझे धारा बंद करने की आवश्यकता नहीं है क्योंकि कक्षा धारा का मालिक नहीं है, लेकिन यही कारण है कि यह सवाल यह है कि हम वर्तमान में हमारे सिस्टम में एक समस्या की जांच कर रहे हैं, कि कुछ एंड्रॉइड क्लाइंट्स, जो इस सेवा में डेटा भेजने के लिए HTTP-Post का उपयोग करते हैं, कभी-कभी खुले कनेक्शन होते हैं जो बंद नहीं होते हैं (netstat
के साथ विश्लेषण जो सूचीबद्ध Tcp कनेक्शन सूचीबद्ध करता है)। सेवा की
[ServiceContract]
public interface IStreamedService {
[OperationContract]
[WebInvoke]
Stream PullMessage(Stream incomingStream);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, UseSynchronizationContext = false)]
public class MyService : IStreamedService {
public System.IO.Stream PullMessage(System.IO.Stream incomingStream) {
// using(incomingStream) {
// Read data from stream
// }
Stream outgoingStream = // assigned by omitted code;
return outgoingStream;
}
विन्यास/
<webHttpBinding>
<binding name="WebHttpBindingConfiguration"
transferMode="Streamed"
maxReceivedMessageSize="1048576"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
closeTimeout="00:10:00"/>
</webHttpBinding>
इसे एक टिप्पणी के रूप में रखना, क्योंकि मैं 100% निश्चित नहीं हूं। मुझे लगता है कि आपको 'स्ट्रीम' बंद करना चाहिए, क्योंकि दूसरी पार्टी इसे वापस करने से पहले इसे बंद नहीं कर सकती है। मुझे एहसास है जैसा कि आपने कहा- काउंटर-सहज ज्ञान युक्त। साथ ही, मुझे नहीं लगता कि एक खुला टीसीपी कनेक्शन 'स्ट्रीम' से खुला है ... इसे बंद किया जा सकता है। – pleinolijf
@albertjan क्या कोई कारण है कि आप इस तरह से टिप्पणियां लिखते हैं या आप पूरे वाक्यों में लिखने में असमर्थ हैं? मैं समझ नहीं पा रहा हूं कि आप क्या कहना चाहते हैं। क्या आप विस्तार से बता सकते हैं? – seba