I was thinking about that but looking at asp.net HttpRequest decompiled we have:
```
public NameValueCollection Headers
    {
      get
      {
        if (this._headers == null)
        {
          this._headers = new HttpHeaderCollection(this._wr, this, 8);
          if (this._wr != null)
            this.FillInHeadersCollection();
          if (!(this._wr is IIS7WorkerRequest))
            this._headers.MakeReadOnly();
        }
        return (NameValueCollection) this._headers;
      }
    }

 public NameValueCollection QueryString
    {
      get
      {
        if (this._queryString == null)
        {
          this._queryString = new HttpValueCollection();
          if (this._wr != null)
            this.FillInQueryStringCollection();
          this._queryString.MakeReadOnly();
        }
        if (this._flags[1])
        {
          this._flags.Clear(1);
          HttpRequest.ValidateNameValueCollection((NameValueCollection) this._queryString, "Request.QueryString");
        }
        return (NameValueCollection) this._queryString;
      }
    }
```