Uri.MakeRelativeUri(Uri) Method


Determines the difference between two Uri instances.

public Uri MakeRelativeUri (Uri uri);

The URI to compare to the current URI.


If the hostname and scheme of this URI instance and uri are the same, then this method returns a relative Uri that, when appended to the current URI instance, yields uri.

If the hostname or scheme is different, then this method returns a Uri that represents the uri parameter.


uri is null.

This instance represents a relative URI, and this property is valid only for absolute URIs.


The following example creates 2 Uri instances. The difference in the path information is written to the console.

// Create a base Uri.
Uri^ address1 = gcnew Uri( "http://www.contoso.com/" );

// Create a new Uri from a string.
Uri^ address2 = gcnew Uri( "http://www.contoso.com/index.htm?date=today" );

// Determine the relative Uri.  
Console::WriteLine( "The difference is {0}", address1->MakeRelativeUri( address2 ) );
// Create a base Uri.
Uri address1 = new Uri("http://www.contoso.com/");

// Create a new Uri from a string.
Uri address2 = new Uri("http://www.contoso.com/index.htm?date=today"); 

// Determine the relative Uri.  
Console.WriteLine("The difference is {0}", address1.MakeRelativeUri(address2));
    ' Create a base Uri.
    Dim address1 As New Uri("http://www.contoso.com/")
    ' Create a new Uri from a string.
    Dim address2 As New Uri("http://www.contoso.com/index.htm?date=today")
    ' Determine the relative Uri.  
    Console.WriteLine("The difference is {0}", address1.MakeRelativeUri(address2))

End Sub 'SampleMakeRelative


The following table shows the URI instance, toUri, and the results of calling MakeRelativeUri.

Current URI instance toUri Return value
http://www.contoso.com/ http://www.contoso.com/test/test.htm test/test.htm
http://www.contoso.com/test1/ http://www.contoso.com/ ../
http://www.contoso.com:8000/ http://www.contoso.com/test/test.htm http://www.contoso.com/test/test.htm
http://username@www.contoso.com/ http://www.contoso.com/test1/test1.txt test1/test1.txt

User information, if present in the URI, is ignored.

Applies to