다음을 통해 공유


Uri 클래스

URI(Uniform Resource Indentifier)의 개체 표현을 제공하며 URI 부분에 쉽게 액세스할 수 있도록 합니다.

네임스페이스: System
어셈블리: System(system.dll)

구문

‘선언
<SerializableAttribute> _
Public Class Uri
    Implements ISerializable
‘사용 방법
Dim instance As Uri
[SerializableAttribute] 
public class Uri : ISerializable
[SerializableAttribute] 
public ref class Uri : ISerializable
/** @attribute SerializableAttribute() */ 
public class Uri implements ISerializable
SerializableAttribute 
public class Uri implements ISerializable

설명

URI는 인트라넷이나 인터넷에서 응용 프로그램에 사용할 수 있는 리소스를 간단하게 나타낸 것입니다. Uri 클래스는 구문 분석, 비교, 조합 등을 포함한 URI 처리에 필요한 속성 및 메서드를 정의합니다. Uri 클래스 속성은 읽기 전용이므로 수정 가능한 개체를 만들려면 UriBuilder 클래스를 사용합니다.

기본 URI에 대한 상대 URI(예: "/new/index.htm")를 확장하여 절대 URI로 만듭니다. 필요한 경우에는 절대 URI를 상대 URI로 변환하는 데 필요한 MakeRelative 메서드가 제공됩니다.

문자열이 체계 식별자를 포함하는 제대로 구성된 URI인 경우 Uri 생성자는 URI 문자열을 이스케이프하지 않습니다.

Uri 속성은 이스케이프된 인코딩으로 정식 데이터 표현을 반환합니다. 이때 유니코드 값이 127보다 큰 모든 문자는 해당하는 16진수 값으로 대체됩니다. URI를 정규 형식으로 만들기 위해 Uri 생성자는 다음 단계를 수행합니다.

  • URI 체계를 소문자로 변환합니다.

  • 호스트 이름을 소문자로 변환합니다.

  • 호스트 이름이 IPv6 주소이면 정식 IPv6 주소가 사용됩니다. ScopeId와 다른 선택적 IPv6 데이터는 제거됩니다.

  • 기본 포트 번호와 빈 포트 번호를 제거합니다.

  • 이스케이프된 표현을 비롯하여 /./, /../, //와 같이 시퀀스를 압축함으로써 계층적 URI의 경로를 정식화합니다.

  • 계층적 URI의 경우 호스트가 슬래시(/)로 끝나지 않으면 슬래시가 추가됩니다.

  • URI에서 예약된 문자는 RFC 2396에 따라 이스케이프됩니다.

ToString 메서드를 사용하여 이스케이프 인코딩된 URI 참조인 Uri 클래스의 내용을 읽을 수 있는 URI 참조로 변환할 수 있습니다. 일부 예약된 문자는 ToString 메서드의 출력에서 여전히 이스케이프될 수 있습니다. 이것은 ToString에서 반환하는 값에서 명확한 URI를 다시 만들 수 있도록 하기 위한 것입니다.

일부 URI에는 단편 식별자 또는 쿼리가 들어 있거나 둘 다 들어 있습니다. 단편 식별자는 번호 기호(#) 다음에 오는 텍스트로, 번호 기호는 포함하지 않습니다. 단편 텍스트는 Fragment 속성에 저장됩니다. 쿼리 정보는 URI에서 물음표(?) 다음에 오는 텍스트이며 쿼리 텍스트는 Query 속성에 저장됩니다.

.NET Framework 버전 1.1에서 생성자에 지정된 문자열에 알 수 없는 체계와 "c:\"가 포함되어 있으면 URI 클래스는 콜론 다음에 "//"를 삽입합니다. 예를 들어, URI xyz:c:\abcxyz://c:/abc로 변환됩니다. .NET Framework 버전 2.0에서는 이 동작이 제거되었으며 예제 문자열은 xyz:c:/abc로 변환됩니다.

참고

URI 클래스에서는 IP 주소를 IPv4 프로토콜의 경우 네 자리 표기법으로 사용하고 IPv6 프로토콜의 경우 콜론과 16진수 표기법으로 사용합니다. IPv6 주소는 http://[::1]와 같이 대괄호로 묶어야 합니다.

성능 고려 사항

URI가 포함된 Web.config 파일을 사용하여 응용 프로그램을 초기화하는 경우 URI의 체계 식별자가 표준이 아니면 URI를 처리하는데 시간이 더 필요합니다. 이러한 경우 시작할 때가 아니라 URI가 필요할 때 응용 프로그램의 영향을 받는 부분을 초기화합니다.

호출자 참고 사항 보안 문제 때문에 응용 프로그램에서는 dontEscape가 true로 설정된 상태에서 신뢰할 수 없는 소스로부터 Uri 인스턴스를 받아들일 때 주의해야 합니다. IsWellFormedOriginalString 메서드를 호출하여 URI 문자열의 유효성을 검사할 수 있습니다.

Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows CE 플랫폼 참고: .NET Compact Framework는 상대 경로와 절대 경로를 구별하지 않습니다. 또한 .NET Compact Framework는 file:// 체계 접두사가 붙은 URI 문자열을 전체 .NET Framework와는 다르게 처리합니다. 상대 file://myfile 사양은 \\myfile로 확인됩니다. file:///myfile(세 개의 슬래시)는 루트 디렉터리에서 \myfile로 확인됩니다. 성공적으로 수행하려면 절대 경로 정보를 지정합니다.

예제

다음 예제에서는 Uri 클래스의 인스턴스를 만들고 이 인스턴스를 사용하여 WebRequest 인스턴스를 만듭니다.

Dim siteUri As New Uri("https://www.contoso.com/")
        
Dim wr As WebRequest = WebRequest.Create(siteUri)
Uri siteUri = new Uri("https://www.contoso.com/");
 
WebRequest wr = WebRequest.Create(siteUri);
Uri^ siteUri = gcnew Uri( "https://www.contoso.com/" );
WebRequest^ wr = WebRequest::Create( siteUri );
Uri siteUri = new Uri("https://www.contoso.com/");
WebRequest wr = WebRequest.Create(siteUri);
var siteUri : Uri = new Uri("https://www.contoso.com/");
var wr : WebRequest = WebRequest.Create(siteUri);

상속 계층 구조

System.Object
  System.Uri

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Uri 멤버
System 네임스페이스
UriBuilder