C#의 Uri.IsBaseOf() 메서드는 현재 Uri 인스턴스가 지정된 다른 Uri 인스턴스의 기본(base) URI에 해당하는지 여부를 판별하는 데 사용됩니다. 예를 들어, https://www.example.com/은 https://www.example.com/index.htm의 기본 주소가 될 수 있습니다.
구문
Uri.IsBaseOf() 메서드의 기본 구문은 다음과 같습니다.
public bool IsBaseOf (Uri uri);
매개변수 uri는 테스트 대상이 되는 Uri 인스턴스를 의미합니다. 이 메서드는 현재 Uri가 지정된 uri의 기본 주소이면 true를, 그렇지 않으면 false를 반환합니다.
예제 1: 같은 도메인 내에서 기본 주소 확인하기
다음 예제에서는 두 개의 URI를 생성한 뒤, 서로 같은지 비교하고 IsBaseOf() 메서드로 기본 주소 관계를 확인해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
Console.WriteLine("URI = "+newURI1);
Uri newURI2 = new Uri("https://www.tutorialspoint.com/");
Console.WriteLine("URI = "+newURI2);
if(newURI1.Equals(newURI2))
Console.WriteLine("두 URI는 동일합니다!");
else
Console.WriteLine("두 URI는 동일하지 않습니다!");
if(newURI1.IsBaseOf(newURI2))
Console.WriteLine("newURI1이 기본 주소입니다");
else
Console.WriteLine("newURI1은 기본 주소가 아닙니다");
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
URI = https://www.tutorialspoint.com/index.htm URI = https://www.tutorialspoint.com/ 두 URI는 동일하지 않습니다! newURI1이 기본 주소입니다
흥미로운 점은 두 URI가 서로 다르다고 판정되었음에도 불구하고, index.htm을 포함하는 첫 번째 URI가 루트 경로인 두 번째 URI의 기본 주소로 인식되었다는 것입니다. 이처럼 IsBaseOf()는 단순 문자열 비교가 아닌 URI 계층 구조를 기준으로 판단합니다.
예제 2: 서로 다른 도메인 간 비교
이번에는 서로 다른 도메인을 가진 두 URI를 비교해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
Console.WriteLine("URI = "+newURI1);
Uri newURI2 = new Uri("https://www.qries.com/");
Console.WriteLine("URI = "+newURI2);
if(newURI1.Equals(newURI2))
Console.WriteLine("두 URI는 동일합니다!");
else
Console.WriteLine("두 URI는 동일하지 않습니다!");
if(newURI1.IsBaseOf(newURI2))
Console.WriteLine("newURI1이 기본 주소입니다");
else
Console.WriteLine("newURI1은 기본 주소가 아닙니다");
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
URI = https://www.tutorialspoint.com/index.htm URI = https://www.qries.com/ 두 URI는 동일하지 않습니다! newURI1은 기본 주소가 아닙니다
정리
Uri.IsBaseOf() 메서드는 스키마(scheme), 호스트(host), 포트(port), 경로(path) 등을 종합적으로 고려하여 두 URI 간의 계층적 포함 관계를 판별합니다. 따라서 URL 기반의 리소스 탐색, 상대 경로 해석, 사이트맵 검증 등의 작업에서 유용하게 활용할 수 있습니다. 단, 도메인이 다른 경우에는 항상 false를 반환한다는 점을 기억해 두시기 바랍니다.