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-адреса, содержащие символы в диапазоне ОТ U+0000 до U+007F, и передаются GetAscii(String) в метод двух IdnMapping объектов. Для одного объекта задано UseStd3AsciiRules true
свойство, а для другого объекта задано значение false
. В выходных данных отображаются недопустимые символы, если UseStd3AsciiRules свойство является true
допустимым, если оно есть false
.
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 , могут отображаться только стандартные символы.
По умолчанию значение UseStd3AsciiRules свойства равно false
, а развернутое подмножество символов ASCII разрешено в метке.
Примечание
Класс IdnMapping запрещает использование нераспроизменяемых символов от U+0000 до U+001F и U+007F в метках доменных имен независимо от параметра UseStd3AsciiRules свойства. Этот запрет снижает риск атак безопасности, таких как подделывание имен.