public static Uri ToRelativeUri(this Uri uri)
{
if (uri == null)
{
throw new ArgumentNullException("uri");
}
if (!uri.IsAbsoluteUri)
{
return uri;
}
string result = uri.ToString();
result = result.Substring(uri.ToString().IndexOf(uri.Host) + uri.Host.Length);
if (result[0] == ':')
{
result = result.Substring(1 + uri.Port.ToString().Length);
}
return new Uri(result, UriKind.Relative);
}