Uri.DnsSafeHost Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan nama host yang, setelah tidak di-unescaped jika perlu, aman digunakan untuk resolusi DNS.
public:
property System::String ^ DnsSafeHost { System::String ^ get(); };
public string DnsSafeHost { get; }
member this.DnsSafeHost : string
Public ReadOnly Property DnsSafeHost As String
Nilai Properti
Bagian host dari URI dalam format yang cocok untuk resolusi DNS; atau string host asli, jika sudah cocok untuk resolusi.
Pengecualian
Instans ini mewakili URI relatif, dan properti ini hanya valid untuk URI absolut.
Contoh
Contoh berikut membuat instans Uri dari string. Ini mengilustrasikan perbedaan antara nilai yang dikembalikan dari Host, yang mengembalikan nama host atau alamat yang ditentukan dalam URI, dan nilai yang dikembalikan dari DnsSafeHost, yang mengembalikan alamat yang aman untuk digunakan dalam resolusi DNS.
// 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.
let address = Uri "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"
// Make the address DNS safe.
// The following outputs "[fe80::200:39ff:fe36:1a2d]".
printfn $"{address.Host}"
// The following outputs "fe80::200:39ff:fe36:1a2d%254".
printfn $"{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
Seperti yang dijelaskan dalam Remarks, batalkan unescape nama host sebelum menyelesaikannya. Anda dapat menggunakan UnescapeDataString metode untuk membuka kata kunci nama host, dan Anda dapat mengatasinya dengan memanggil GetHostEntry metode .
Keterangan
Untuk alamat IPv6, tanda kurung siku ([]) dihapus dan ScopeId properti diatur, jika ditentukan saat instans ini dibuat.
Jika Anda menggunakan string escaped untuk membuat instans ini (misalnya, "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"), maka DnsSafeHost mengembalikan string escaped. Batalkan untai (karakter) yang lolos yang dikembalikan dari DnsSafeHost sebelum menggunakan string tersebut untuk resolusi DNS (lihat Contoh). Jika Anda menggunakan unescaped string yang tidak valid untuk membuat instans ini (misalnya, "http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm"), maka DnsSafeHost mengembalikan unescaped string.
Properti DnsSafeHost bergantung pada pengaturan konfigurasi di aplikasi .NET Framework, seperti yang dibahas nanti dalam topik ini. Properti IdnHost disediakan sebagai alternatif pilihan untuk menggunakan DnsSafeHost, karena IdnHost dijamin selalu aman DNS.
Properti DnsSafeHost diperluas dalam .NET Framework v3.5, 3.0 SP1, dan 2.0 SP1 untuk menyediakan dukungan Pengidentifikasi Sumber Daya Internasional (IRI) berdasarkan RFC 3987. Namun, untuk memastikan kompatibilitas aplikasi dengan versi sebelumnya, Anda harus mengaktifkannya secara khusus di aplikasi .NET Framework. Untuk mengaktifkan dukungan untuk IRI, dua perubahan berikut diperlukan:
Tambahkan baris berikut ke file machine.config di bawah direktori .NET Framework 2.0:
\<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />Tentukan apakah Anda ingin penguraian Nama Domain Internasional (IDN) diterapkan ke nama domain dan apakah aturan penguraian IRI harus diterapkan. Ini dapat dilakukan di machine.config atau dalam file app.config . Misalnya, tambahkan hal berikut:
<configuration> <uri> <idn enabled="All" /> <iriParsing enabled="true" /> </uri> </configuration>
Mengaktifkan IDN mengonversi semua label Unicode dalam nama domain ke Punycode yang setara. Nama punycode hanya berisi karakter ASCII dan selalu dimulai dengan awalan xn-- . Alasannya adalah untuk mendukung server DNS yang ada di Internet, karena sebagian besar server DNS hanya mendukung karakter ASCII (lihat RFC 3940).
Mengaktifkan IDN hanya memengaruhi nilai DnsSafeHost properti.
Ada tiga nilai yang mungkin untuk IDN tergantung pada server DNS yang digunakan:
idn diaktifkan = Semua
Nilai ini akan mengonversi nama domain Unicode apa pun menjadi setara Dengan Punycode (nama IDN).
idn diaktifkan = AllExceptIntranet
Nilai ini akan mengonversi semua nama domain Unicode eksternal untuk menggunakan setara Punycode (nama IDN). Dalam hal ini untuk menangani nama internasional di Intranet lokal, server DNS yang digunakan untuk Intranet harus mendukung nama Unicode.
idn diaktifkan = Tidak ada
Nilai ini tidak akan mengonversi nama domain Unicode apa pun untuk menggunakan Punycode. Ini adalah nilai default, yang konsisten dengan perilaku .NET Framework 2.0.
Mengaktifkan penguraian IRI (iriParsing diaktifkan = true) menormalkan dan memeriksa karakter sesuai dengan aturan IRI di RFC 3987. Nilai defaultnya adalah false dan menormalkan dan memeriksa karakter sesuai dengan RFC 2396 dan RFC 2732 (untuk literal IPv6).
Untuk informasi selengkapnya tentang dukungan IRI, lihat bagian Keterangan untuk Uri kelas.