IdnMapping.UseStd3AsciiRules Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica si se utilizan convenciones de nomenclatura relajada o no estándar en las operaciones realizadas por miembros del objeto IdnMapping actual.
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
Valor de propiedad
Es true
si se usan convenciones de nomenclatura estándar en las operaciones; de lo contrario, es false
.
Ejemplos
En el ejemplo siguiente se generan direcciones URL que contienen caracteres en el intervalo ASCII de U+0000 a U+007F y se pasan al GetAscii(String) método de dos IdnMapping objetos. Un objeto tiene su UseStd3AsciiRules propiedad establecida true
en y el otro objeto lo tiene establecido en false
. La salida muestra los caracteres que no son válidos cuando la UseStd3AsciiRules propiedad es true
pero válida cuando es 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
Comentarios
Los nombres de dominio que siguen las reglas de nomenclatura estándar constan de un subconjunto específico de caracteres en el intervalo de caracteres US-ASCII. Los caracteres son las letras A a Z, los dígitos del 0 al 9, el carácter de guion (-) (U+002D) y el carácter del punto (.). El caso de los caracteres no es significativo. Las convenciones de nomenclatura relajadas permiten el uso de una gama más amplia de caracteres ASCII, incluido el carácter de espacio (U+0020), el carácter de signo de exclamación (U+0021) y el carácter de barra inferior (U+005F). Si UseStd3AsciiRules es true
, solo pueden aparecer caracteres estándar en una etiqueta devuelta por el GetAscii método .
De forma predeterminada, el valor de la UseStd3AsciiRules propiedad es false
y se permite un subconjunto expandido de caracteres ASCII en una etiqueta.
Nota
La IdnMapping clase prohíbe el uso de los caracteres no reproducibles U+0000 a U+001F y U+007F en etiquetas de nombre de dominio independientemente del valor de la UseStd3AsciiRules propiedad. Esta prohibición reduce el riesgo de ataques de seguridad, como la suplantación de nombre.