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 свойство является 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 разрешено в метке.
Note
Класс IdnMapping запрещает использование нераспускаемых символов U+0000 до U+001F и U+007F в метках доменных имен независимо от параметра UseStd3AsciiRules свойства. Это запрет снижает риск атак безопасности, таких как спуфинго имен.