Share via


IdnMapping.UseStd3AsciiRules Propriedade

Definição

Obtém ou define um valor que indica se convenções de nomenclatura padrão ou amenas são usadas em operações realizadas por membros do objeto IdnMapping atual.

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 da propriedade

true se as convenções de nomenclatura padrão forem usadas em operações; caso contrário, false.

Exemplos

O exemplo a seguir gera URLs que contêm caracteres no intervalo ASCII de U+0000 a U+007F e os passa para o GetAscii(String) método de dois IdnMapping objetos. Um objeto tem sua UseStd3AsciiRules propriedade definida como truee o outro objeto o define como false. A saída exibe os caracteres inválidos quando a UseStd3AsciiRules propriedade é true válida quando é 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

Comentários

Os nomes de domínio que seguem as regras de nomenclatura padrão consistem em um subconjunto específico de caracteres no intervalo de caracteres US-ASCII. Os caracteres são as letras A a Z, os dígitos de 0 a 9, o caractere hífen (-) (U+002D) e o caractere de ponto (.). O caso dos caracteres não é significativo. Convenções de nomenclatura descontraídas permitem o uso de uma gama mais ampla de caracteres ASCII, incluindo o caractere de espaço (U+0020), o caractere de ponto de exclamação (U+0021) e o caractere da barra inferior (U+005F). Se UseStd3AsciiRules for true, somente caracteres padrão poderão aparecer em um rótulo retornado pelo GetAscii método .

Por padrão, o valor da UseStd3AsciiRules propriedade é falsee um subconjunto expandido de caracteres ASCII é permitido em um rótulo.

Observação

A IdnMapping classe proíbe o uso dos caracteres não reproduzíveis U+0000 a U+001F e U+007F em rótulos de nome de domínio, independentemente da configuração da UseStd3AsciiRules propriedade. Essa proibição reduz o risco de ataques de segurança, como falsificação de nomes.

Aplica-se a