IdnMapping.UseStd3AsciiRules Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает значение, указывающее, следует ли использовать стандартные или ослабленные правила именования в операциях, выполняемых членами текущего объекта IdnMapping.
public:
property bool UseStd3AsciiRules { bool get(); void set(bool value); };
public bool UseStd3AsciiRules { get; set; }
member this.UseStd3AsciiRules : bool with get, set
Public Property UseStd3AsciiRules As Boolean
Значение свойства
Значение true
, если в процедурах используются стандартные правила именования; в противном случае — значение false
.
Примеры
В следующем примере создаются URL-адреса, содержащие символы в диапазоне ASCII от U+0000 до U+007F, и передаются в GetAscii(String) метод двух IdnMapping объектов. Для одного объекта задано UseStd3AsciiRulestrue
свойство , а для другого объекта — значение false
. В выходных данных отображаются символы, которые являются недопустимыми, если свойство является допустимымUseStd3AsciiRules, если оно имеет значение false
.true
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
int nFailed = 0;
IdnMapping idnStd = new IdnMapping();
idnStd.UseStd3AsciiRules = true;
IdnMapping idnRelaxed = new IdnMapping();
idnRelaxed.UseStd3AsciiRules = false; // The default, but make it explicit.
for (int ctr = 0; ctr <= 0x7F; ctr++) {
string name = $"Prose{ctr}ware.com";
bool stdFailed = false;
bool relaxedFailed = false;
string punyCode = "";
try {
punyCode = idnStd.GetAscii(name);
}
catch (ArgumentException) {
stdFailed = true;
}
try {
punyCode = idnRelaxed.GetAscii(name);
}
catch (ArgumentException) {
relaxedFailed = true;
}
if (relaxedFailed != stdFailed) {
Console.Write("U+{0:X4} ", ctr);
nFailed++;
if (nFailed % 5 == 0)
Console.WriteLine();
}
}
}
}
// The example displays the following output:
// U+0020 U+0021 U+0022 U+0023 U+0024
// U+0025 U+0026 U+0027 U+0028 U+0029
// U+002A U+002B U+002C U+002F U+003A
// U+003B U+003C U+003D U+003E U+003F
// U+0040 U+005B U+005C U+005D U+005E
// U+005F U+0060 U+007B U+007C U+007D
// U+007E
Imports System.Globalization
Module Example
Public Sub Main()
Dim nFailed As Integer = 0
Dim idnStd As New IdnMapping()
idnStd.UseStd3AsciiRules = True
Dim idnRelaxed As New IdnMapping
idnRelaxed.UseStd3AsciiRules = False ' The default, but make it explicit.
For ctr As Integer = 0 To &h7F
Dim name As String = "Prose" + ChrW(ctr) + "ware.com"
Dim stdFailed As Boolean = False
Dim relaxedFailed As Boolean = False
Dim punyCode As String
Try
punyCode = idnStd.GetAscii(name)
Catch e As ArgumentException
stdFailed = True
End Try
Try
punyCode = idnRelaxed.GetAscii(name)
Catch e As ArgumentException
relaxedFailed = True
End Try
If relaxedFailed <> stdFailed Then
Console.Write("U+{0:X4} ", ctr)
nFailed += 1
If nFailed Mod 5 = 0 Then Console.WriteLine()
End If
Next
End Sub
End Module
' The example displays the following output:
' U+0020 U+0021 U+0022 U+0023 U+0024
' U+0025 U+0026 U+0027 U+0028 U+0029
' U+002A U+002B U+002C U+002F U+003A
' U+003B U+003C U+003D U+003E U+003F
' U+0040 U+005B U+005C U+005D U+005E
' U+005F U+0060 U+007B U+007C U+007D
' U+007E
Комментарии
Доменные имена, которые соответствуют стандартным правилам именования, состоят из определенного подмножества символов в диапазоне символов US-ASCII. Символами являются буквы от A до Z, цифры от 0 до 9, дефис (-) (U+002D) и символ точки (.). Регистр символов не имеет значения. Упрощенные соглашения об именовании позволяют использовать более широкий диапазон символов ASCII, включая символ пробела (U+0020), восклицательный знак (U+0021) и символ нижней панели (U+005F). Если UseStd3AsciiRules имеет значение true
, в метке, возвращаемой методом , могут отображаться только стандартные символы GetAscii .
По умолчанию свойство имеет false
значение UseStd3AsciiRules , а в метке допускается расширенное подмножество символов ASCII.
Примечание
Класс IdnMapping запрещает использование неразрывных символов от U+0000 до U+001F и U+007F в метках доменных имен независимо от значения UseStd3AsciiRules свойства . Этот запрет снижает риск атак безопасности, таких как спуфингование имен.