public static string GetQs(this HttpRequest request)
{
NameValueCollection qs = EnsureQsStored(request);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < qs.Count; i++)
{
string key = qs.GetKey(i);
// ReSharper disable once AssignNullToNotNullAttribute
string val = string.Join("&", qs.GetValues(i));
string pair = key == null ? val : string.Format("{0}={1}", HttpUtility.UrlEncode(qs.GetKey(i)), HttpUtility.UrlEncode(qs[i]));
sb.Append(sb.Length == 0 ? "?" : "&");
sb.Append(pair);
}
return sb.ToString();
}