2012-01-23 12 views
27

के साथ चिह्नित इकाई को संभावित शून्य असाइनमेंट मुझे response.GetResponseStream() पर यह चेतावनी मिलती है कि मुझे इसे कैसे संभालना चाहिए?रिशेर्पर: अमान्य विशेषता

// Get response 
using (var response = request.GetResponse() as HttpWebResponse) 
{ 
    // Get the response stream 
    if (response != null) 
    { 
     var reader = new StreamReader(response.GetResponseStream()); 
     var responseString = reader.ReadToEnd(); 
     return responseString; 
    } 
} 

कुछ उत्तरों के आधार पर स्पष्टता के लिए की गलत व्याख्या:

using (var response = request.GetResponse() as HttpWebResponse) 

इस लाइन वह जगह है जहाँ चेतावनी उत्पन्न हो रही है:

इस लाइन नहीं जहां चेतावनी उत्पन्न हो रही है है :

var reader = new StreamReader(response.GetResponseStream()); 
+0

क्यों न केवल Resharper इसे आपके लिए ठीक करने दें? –

+0

** इसे अनदेखा करें ** इस बार – gdoron

+7

@ यूवे रिशेर्पर को यह नहीं पता कि "इसे ठीक करें" – katit

उत्तर

26
var reader = new StreamReader(response.GetResponseStream()); 

मुझे संदेह है कि StreamReader कन्स्ट्रक्टर के पैरामीटर में notnull विशेषता है। निम्न का प्रयास करें:

var stream = response.GetResponseStream(); 
if (stream == null) 
    // throw an exception 
var reader = new StreamReader(stream); 
7

using बयान में अपने कोड को छोटा करने और प्रयोज्य संसाधन लपेटकर का प्रयास करें:

using (var response = request.GetResponse()) 
using (var reader = new StreamReader(response.GetResponseStream())) 
{ 
    return reader.ReadToEnd(); 
} 

या आगे भी: response ऑब्जेक्ट प्रकार HttpWebRequest की है

using (var client = new WebClient()) 
{ 
    return client.DownloadString("http://foo.bar.com/") 
} 
+1

मुझे 'सी #' बहुत कुछ नहीं पता है, लेकिन इसका उपयोग करेंगे (var reader = new StreamReader (response.GetResponseStream())) 'एक ही resharper चेतावनी नहीं मिलता है? –

1

, तो प्रतिक्रिया हमेशा प्रकार HttpWebResponse का हो जाएगा । यदि यह नहीं है, तो यह कभी नहीं होगा।

या तो आप गलत जगह पर इसका परीक्षण कर रहे हैं (यदि आप पर कॉल करते हैं तो आपको WebRequest द्वारा निकाले गए किसी अन्य वर्ग को केवल परिणाम फेंकने के लिए पारित किया जा सकता है) या बिना किसी प्रभाव के अनावश्यक परीक्षण।

मैं अनुमान लगा रहा हूं कि इसके नीचे नल के परीक्षण के बावजूद resharper इसके बारे में चिंता कर रहा है। मैं या तो एक सीधा कलाकारों के लिए जाना चाहते हैं:

using (var response = (HttpWebResponse)request.GetResponse()) 
using(var reader = new StreamReader(response.GetResponseStream())) 
    return reader.ReadToEnd(); 

या, आप पर विचार बिल्कुल HttpWebResponse के किसी भी सदस्यों को बताया कि WebResponse से प्राप्त नहीं है कोई डाली उपयोग नहीं कर रहे,:

using (var response = (HttpWebResponse)request.GetResponse()) 
using(var reader = new StreamReader(response.GetResponseStream())) 
    return reader.ReadToEnd(); 
संबंधित मुद्दे