Uri.DnsSafeHost 속성

정의

필요한 경우 이스케이프 해제된 후 호스트 이름을 가져오는 것이 DNS 확인에 사용하기에 안전합니다.Gets a host name that, after being unescaped if necessary, is safe to use for DNS resolution.

public:
 property System::String ^ DnsSafeHost { System::String ^ get(); };
public string DnsSafeHost { get; }
member this.DnsSafeHost : string
Public ReadOnly Property DnsSafeHost As String

속성 값

String

The host part of the URI in a format suitable for DNS resolution; or the original host string, if it is already suitable for resolution.

예외

이 인스턴스가 상대 URI를 나타내고 이 속성이 절대 URI에만 유효한 경우This instance represents a relative URI, and this property is valid only for absolute URIs.

예제

다음 예에서는 Uri 문자열에서 인스턴스를 만듭니다.The following example creates a Uri instance from a string. 에서 반환 되는 값의 차이를 보여 줍니다 .이 값은 Host URI에 지정 된 호스트 이름 또는 주소를 반환 하 고에서 반환 된 값은 DnsSafeHost DNS 확인에 사용 하기에 안전 하 게 사용 되는 주소를 반환 합니다.It illustrates the difference between the value returned from Host, which returns the host name or address specified in the URI, and the value returned from DnsSafeHost, which returns an address that is safe to use in DNS resolution.

// Create new Uri using a string address.         
Uri^ address = gcnew Uri( "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm" );

// Make the address DNS safe. 
// The following outputs "[fe80::200:39ff:fe36:1a2d]".
Console::WriteLine( address->Host );

// The following outputs "fe80::200:39ff:fe36:1a2d%254".
Console::WriteLine( address->DnsSafeHost );
// Create new Uri using a string address.
Uri address = new Uri("http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm");

// Make the address DNS safe.

// The following outputs "[fe80::200:39ff:fe36:1a2d]".
Console.WriteLine(address.Host);

// The following outputs "fe80::200:39ff:fe36:1a2d%254".
Console.WriteLine(address.DnsSafeHost);
    ' Create new Uri using a string address.         
    Dim address As New Uri("http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm")
    
    ' Make the address DNS safe. 
    ' The following outputs "[fe80::200:39ff:fe36:1a2d]".
    Console.WriteLine(address.Host)
    
    ' The following outputs "fe80::200:39ff:fe36:1a2d%254".
    Console.WriteLine(address.DnsSafeHost)

End Sub

설명에 설명 된 대로 unescape를 확인 하기 전에 호스트 이름을 확인 합니다.As explained in Remarks, unescape the host name before resolving it. 메서드를 사용 하 여 UnescapeDataString 호스트 이름을 unescape 메서드를 호출 하 여 해결할 수 있습니다 GetHostEntry .You can use the UnescapeDataString method to unescape the host name, and you can resolve it by calling the GetHostEntry method.

설명

IPv6 주소의 경우 대괄호 ([])가 제거 되 고 ScopeId 이 인스턴스가 생성 될 때 지정 된 경우 속성이 설정 됩니다.For IPv6 addresses, the brackets ([]) are removed and the ScopeId property is set, if one was specified when this instance was constructed.

이스케이프 된 문자열을 사용 하 여이 인스턴스를 생성 한 경우 (예: "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm" ) DnsSafeHost는 이스케이프 된 문자열을 반환 합니다.If you used an escaped string to construct this instance (for example, "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"), then DnsSafeHost returns an escaped string. DnsSafeHostDNS 확인에 해당 문자열을 사용 하기 전에에서 반환 된 이스케이프 된 문자열을 Unescape 합니다 (예제 참조).Unescape any escaped string returned from DnsSafeHost before using that string for DNS resolution (see the Example). 잘못 된 이스케이프 되지 않은 문자열을 사용 하 여이 인스턴스를 생성 한 경우 (예: "http://[fe80:: 200:39ff: fe36:1a2d %4]/temp/example.htm") DnsSafeHost는 이스케이프 되지 않은 문자열을 반환 합니다.If you used an invalid unescaped string to construct this instance (for example, "http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm"), then DnsSafeHost returns an unescaped string.

DnsSafeHost속성은이 항목의 뒷부분에서 설명 하는 구성 설정에 따라 달라 집니다.The DnsSafeHost property is dependent on configuration settings, as discussed later in this topic. 구성 설정을 사용 하는 경우 일관성 없는 결과가 발생할 수 있는 Windows 스토어 애플리케이션에서 변경할 수 없습니다 DnsSafeHost합니다.Configuration settings cannot be changed by Windows Store applications, which can lead to inconsistent results when using DnsSafeHost. IdnHost속성은 사용에 대 한 기본 설정 대신 제공 됩니다 DnsSafeHost IdnHost .는 현재 app.config 설정에 관계 없이 항상 DNS 안전이 보장 되기 때문입니다.The IdnHost property is provided as the preferred alternative to using DnsSafeHost, because IdnHost is guaranteed to always be DNS safe, no matter what the current app.config settings might be.

DnsSafeHost속성은 .NET Framework v 3.5, 3.0 sp1 및 2.0 s p 1에서 확장 되어 RFC 3987을 기반으로 IRI (국가별 리소스 식별자) 지원을 제공 합니다.The DnsSafeHost property has been extended in .NET Framework v3.5, 3.0 SP1, and 2.0 SP1 to provide International Resource Identifier (IRI) support based on RFC 3987. 현재 사용자의 경우 IRI를 사용하도록 설정하지 않는 한 .NET Framework 2.0 동작에서 차이를 느끼지 못할 것입니다.Current users will not see any change from the .NET Framework 2.0 behavior unless they specifically enable IRI. 이 덕분에 .NET Framework 이전 버전과의 애플리케이션 호환성이 제공됩니다.This ensures application compatibility with prior versions of the .NET Framework.

IRI에 대 한 지원을 사용 하도록 설정 하려면 다음 두 가지 변경이 필요 합니다.To enable support for IRI, the following two changes are required:

  1. .NET Framework 2.0 디렉터리 아래의 machine.config 파일에 다음 줄을 추가 합니다. <section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />Add the following line to the machine.config file under the .NET Framework 2.0 directory <section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

  2. IDN (다국어 도메인 이름) 구문 분석이 도메인 이름에 적용 되도록 할지 여부와 IRI 구문 분석 규칙을 적용할지 여부를 지정 합니다.Specify whether you want Internationalized Domain Name (IDN) parsing applied to the domain name and whether IRI parsing rules should be applied. 이 작업은 machine.config 또는 app.config 파일에서 수행할 수 있습니다.This can be done in the machine.config or in the app.config file. 예를 들어 다음을 추가 합니다.For example, add the following:

    <configuration>  
      <uri>  
      <idn enabled="All" />  
      <iriParsing enabled="true" />  
      </uri>  
    </configuration>  
    

IDN을 사용하면 도메인 이름의 모든 유니코드 레이블이 해당 Punycode 문자로 변환됩니다.Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Punycode 이름에는 ASCII 문자만 사용되며 항상 xn-- 접두사로 시작합니다.Punycode names contain only ASCII characters and always start with the xn-- prefix. 대부분의 DNS 서버는 ASCII 문자만 지원하므로(RFC 3940 참조) 이렇게 해야 인터넷에서 기존 DNS 서버를 지원할 수 있습니다.The reason for this is to support existing DNS servers on the Internet, since most DNS servers only support ASCII characters (see RFC 3940).

IDN을 사용 하도록 설정 하면 속성 값에만 영향을 줍니다 DnsSafeHost .Enabling IDN only affects the value of the DnsSafeHost property.

사용 되는 DNS 서버에 따라 IDN에 대해 다음과 같은 세 가지 값을 사용할 수 있습니다.There are three possible values for IDN depending on the DNS servers that are used:

  • idn 사용 = 모두idn enabled = All

    이 값은 모든 유니코드 도메인 이름을 해당하는 Punycode 항목(IDN 이름)으로 변환합니다.This value will convert any Unicode domain names to their Punycode equivalents (IDN names).

  • idn 사용 = AllExceptIntranetidn enabled = AllExceptIntranet

    이 값은 해당하는 Punycode 항목(IDN 이름)을 사용하도록 모든 외부 유니코드 도메인 이름을 변환합니다.This value will convert all external Unicode domain names to use the Punycode equivalents (IDN names). 이 경우 로컬 인트라넷에 있는 국가별 이름을 처리하기 위해 인트라넷에 사용되는 DNS 서버가 유니코드 이름 확인을 지원해야 합니다.In this case to handle international names on the local Intranet, the DNS servers that are used for the Intranet should support Unicode names.

  • idn 사용 = 없음idn enabled = None

    이 값은 Punycode를 사용하도록 어떠한 유니코드 도메인 이름도 변환하지 않습니다.This value will not convert any Unicode domain names to use Punycode. 이 값은 .NET Framework 2.0 동작에 일치 하는 기본값입니다.This is the default value which is consistent with the .NET Framework 2.0 behaviour.

IRI 구문 분석 (iriParsing 분석 사용 =)을 사용 하면 true RFC 3987의 최신 IRI 규칙에 따라 정규화 및 문자 검사를 수행 합니다.Enabling IRI parsing (iriParsing enabled = true) will do normalization and character checking according to the latest IRI rules in RFC 3987. 기본값은 이며 false rfc 2396 및 rfc 2732 (IPv6 리터럴의 경우)에 따라 정규화 및 문자 검사를 수행 합니다.The default value is false and will do normalization and character checking according to RFC 2396 and RFC 2732 (for IPv6 literals).

IRI 지원에 대 한 자세한 내용은 클래스에 대 한 설명 섹션을 참조 하세요 Uri .For more information on IRI support, see the Remarks section for the Uri class.

적용 대상