예제 #1
0
파일: HttpUtil.cs 프로젝트: bjorg/DReAM
 /// <summary>
 /// Build request uri from decoded uri and raw path.
 /// </summary>
 /// <param name="uri">Already decoded uri.</param>
 /// <param name="rawpath">Raw path string.</param>
 /// <returns>Properly encoded request uri.</returns>
 public static XUri FromHttpContextComponents(Uri uri, string rawpath)
 {
     // Note (arnec): RawUrl is only the path portion, lacking SchemeHostPort
     // but Url does path decoding, so we have to construct the url ourselves
     var parsed = new XUri(uri.GetLeftPart(UriPartial.Authority));
     try {
         parsed = parsed.AtAbsolutePath(rawpath);
     } catch {
         // need to try to do an extra pass at encoding the uri, just in case
         rawpath = _encodingFixUpRegex.Replace(rawpath, m => String.Format("%{0}", StringUtil.HexStringFromBytes(Encoding.ASCII.GetBytes(m.Value))));
         parsed = parsed.AtAbsolutePath(rawpath);
     }
     return parsed;
 }