Resharper: Possible null assignment to entity marked with notnull attribute

后端 未结 3 2048
梦谈多话
梦谈多话 2021-01-01 10:28

I get this warning on response.GetResponseStream() How should I handle this?

// Get response  
using (var response = request.GetResponse() as Ht         


        
相关标签:
3条回答
  • 2021-01-01 11:23

    Try shortening your code and wrapping disposable resources in using statements:

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

    or even further:

    using (var client = new WebClient())
    {
        return client.DownloadString("http://foo.bar.com/")
    }
    
    0 讨论(0)
  • 2021-01-01 11:25
    var reader = new StreamReader(response.GetResponseStream());
    

    I suspect StreamReader constructor's parameter has a notnull attribute. Try the following:

    var stream = response.GetResponseStream();
    if (stream == null)
      // throw an exception
    var reader = new StreamReader(stream);
    
    0 讨论(0)
  • 2021-01-01 11:29

    If the response object is of type HttpWebRequest, then response will always be of type HttpWebResponse. If it's not, then it never will be.

    Either you're testing this at the wrong place (why call .GetResponse() if you could be passed another class derived by WebRequest just to throw away the results) or testing unnecessary with no effect.

    I'm guessing resharper is worrying about that, despite the test for null below it. I'd go for either a direct cast:

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

    Or, considering you aren't using any members of HttpWebResponse that isn't derived from WebResponse, no cast at all:

    using (var response = (HttpWebResponse)request.GetResponse())
    using(var reader = new StreamReader(response.GetResponseStream()))
      return reader.ReadToEnd();
    
    0 讨论(0)
提交回复
热议问题