X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Web%2FSystem.Web%2FServerVariablesCollection.cs;h=e94a6732e5008210c89b5a2b0601c6d54f352bc7;hb=0e0e9a334b7fe4b747ce24d1702333e4d81140f1;hp=66ff4655b918ae496c17b2d7b5c054d3ec60c070;hpb=a5e40870bd3bb18e1681afed6c71e7edfdb80534;p=mono.git diff --git a/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs b/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs index 66ff4655b91..e94a6732e50 100644 --- a/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs +++ b/mcs/class/System.Web/System.Web/ServerVariablesCollection.cs @@ -35,6 +35,7 @@ using System.Collections.Specialized; using System.Runtime.Serialization; using System.Globalization; using System.Security.Permissions; +using System.Web.Util; namespace System.Web { @@ -43,6 +44,20 @@ namespace System.Web HttpRequest request; bool loaded; + string QueryString { + get { + string qs = _request.QueryStringRaw; + + if (String.IsNullOrEmpty (qs)) + return qs; + + if (qs [0] == '?') + return qs.Substring (1); + + return qs; + } + } + public ServerVariablesCollection(HttpRequest request) : base(request) { IsReadOnly = true; @@ -59,7 +74,7 @@ namespace System.Web // if (standard){ sb.Append ("HTTP_"); - sb.Append (key.ToUpper (CultureInfo.InvariantCulture).Replace ("-", "_")); + sb.Append (key.ToUpper (Helpers.InvariantCulture).Replace ('-', '_')); sb.Append (":"); } else { sb.Append (key); @@ -103,7 +118,7 @@ namespace System.Web if (null != hvalue && hvalue.Length > 0) { hname = HttpWorkerRequest.GetKnownRequestHeaderName (i); if (null != hname && hname.Length > 0) - Add ("HTTP_" + hname.ToUpper (CultureInfo.InvariantCulture).Replace ('-', '_'), hvalue); + Add ("HTTP_" + hname.ToUpper (Helpers.InvariantCulture).Replace ('-', '_'), hvalue); } } @@ -115,7 +130,7 @@ namespace System.Web if (hname == null) continue; hvalue = unknown [i][1]; - Add ("HTTP_" + hname.ToUpper (CultureInfo.InvariantCulture).Replace ('-', '_'), hvalue); + Add ("HTTP_" + hname.ToUpper (Helpers.InvariantCulture).Replace ('-', '_'), hvalue); } } } @@ -171,7 +186,7 @@ namespace System.Web Add("LOCAL_ADDR", wr.GetLocalAddress()); Add("PATH_INFO", request.PathInfo); Add("PATH_TRANSLATED", request.PhysicalPath); - Add("QUERY_STRING", request.QueryStringRaw); + Add("QUERY_STRING", QueryString); Add("REMOTE_ADDR", request.UserHostAddress); Add("REMOTE_HOST", request.UserHostName); Add("REMOTE_PORT", wr.GetRemotePort ().ToString ()); @@ -202,7 +217,7 @@ namespace System.Web { if ((name == null) || (this._request == null)) return null; - name = name.ToUpper (CultureInfo.InvariantCulture); + name = name.ToUpper (Helpers.InvariantCulture); switch (name) { case "AUTH_TYPE": if (null != _request.Context.User && _request.Context.User.Identity.IsAuthenticated) @@ -215,7 +230,7 @@ namespace System.Web else return string.Empty; case "QUERY_STRING": - return this._request.QueryStringRaw; + return QueryString; case "PATH_INFO": return this._request.PathInfo; case "PATH_TRANSLATED":