/// <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((string)m.Value)))); parsed = parsed.AtAbsolutePath(rawpath); } return(parsed); }
public void TestSetPath2() { XUri uri = new XUri("http://www.dummy.com:8081/first/second?query=arg"); uri = uri.AtAbsolutePath("/foo/bar?q=a"); Assert.AreEqual("http://www.dummy.com:8081/foo/bar?q=a", uri.ToString()); }
public void TestSetPath2() { XUri uri = new XUri("http://www.dummy.com:8081/first/second?query=arg"); uri = uri.AtAbsolutePath("/foo/bar?q=a"); Assert.AreEqual("http://www.dummy.com:8081/foo/bar?q=a", uri.ToString()); }