Partilhar via


<httpListener> Elemento (configurações de rede)

Personaliza os parâmetros usados pelo HttpListener classe.

<httpListener
  unescapeRequestUrl ="true|false"
/>

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho, e elementos pai.

Atributos

Atributo

Descrição

unescapeRequestUrl

Um valor Boolean que indica se um HttpListener instância usa o URI de escape raw em vez do URI convertido.

Elementos filho

Nenhum.

Elementos pai

Elemento

Descrição

configurações

Configura opções de rede básica para o System.Net namespace.

Comentários

O unescapeRequestUrl atributo indica se HttpListener usa o URI de escape raw em vez do URI convertido onde quaisquer valores codificados por cento são convertidos e outras etapas de normalização são tiradas.

Quando um HttpListener instância recebe uma solicitação por meio do http.sys service, ele cria uma ocorrência da seqüência de caracteres URI fornecida pelo http.syse expõe como o HttpListenerRequest.Url propriedade.

O http.sys service expõe duas seqüências de caracteres URI de solicitação:

  • URI bruto

  • URI convertido

O URI raw é o System.Uri fornecido na linha de solicitação de uma solicitação HTTP:

GET /path/

Host: www.contoso.com

O URI bruto fornecido por http.sys para a solicitação mencionada acima, é "caminho /". Isso representa a seqüência de caracteres após o verbo HTTP como ele foi enviado pela rede.

O http.sys serviço cria um URI convertido a partir das informações fornecidas na solicitação usando o URI fornecido na linha de solicitação HTTP e o cabeçalho do Host para determinar a solicitação do servidor de origem deve ser encaminhado para. Isso é feito, comparando as informações da solicitação com um conjunto de prefixos URI registrados. A documentação do SDK do servidor HTTP se refere a esse URI convertido, como a estrutura HTTP_COOKED_URL.

Para poder comparar a solicitação com prefixos URI registrados, alguns normalização à solicitação precisa ser feito. No exemplo acima o URI convertido seria o seguinte:

https://www.contoso.com/path/

O http.sys service combina o Uri.Host valor da propriedade e a seqüência de caracteres na linha de solicitação para criar um URI convertido. Além disso, http.sys e o System.Uri classe também faz o seguinte:

  • Porcentagem de todos os valores codificados de escapa Un.

  • Caracteres não-ASCII de converte codificado por cento em uma representação de caracteres UTF-16. Observe que há suporte para caracteres UTF-8 e ANSI/DBCS, bem como caracteres do Unicode (codificação Unicode usando o formato de uXXXX %).

  • Executa outras etapas da normalização, como compressão de caminho.

Desde que a solicitação não contém qualquer informação sobre a codificação usada para valores codificados por cento, não ser possível determinar a codificação correta bastando analisando os valores codificados por cento.

Portanto, http.sys fornece duas chaves de registro para modificar o processo:

Chave do registro

Valor padrão

Descrição

EnableNonUTF8

1

Se for zero, http.sys aceita apenas codificado em UTF-8 URLs.

Se diferente de zero, http.sys também aceita URLs codificados em ANSI ou codificado DBCS em solicitações.

FavorUTF8

1

Se diferente de zero, http.sys sempre tenta decodificar uma URL como UTF-8 primeiro; Se a falha de conversão e EnableNonUTF8 é diferente de zero, o HTTP. sys então tenta decodificá-la como ANSI ou DBCS.

Se for zero (e EnableNonUTF8 é diferente de zero), http.sys tentar decodificá-la como ANSI ou DBCS; Se não for bem-sucedida, ele tenta uma conversão UTF-8.

Quando HttpListener recebe uma solicitação, ele usa o URI convertido de http.sys como entrada para o Url propriedade.

É necessário para oferecer suporte a caracteres além de caracteres e números URIs. Um exemplo é o seguinte URI é usado para recuperar informações de cliente para cliente número "1/3812":

https://www.contoso.com/Customer('1%2F3812')/

Observe a barra codificado por cento no Uri (2F %). Isso é necessário, já que neste caso o caractere de barra representa os dados e não um delimitador de caminho.

Passando a seqüência de caracteres para o construtor de Uri levará o seguinte URI:

https://www.contoso.com/Customer('1/3812')/

Dividir o caminho em seus segmentos resultaria os seguintes elementos:

Customer('1

3812')

Isso não é a intenção do remetente da solicitação.

Se a unescapeRequestUrl atributo está definido como false, quando o HttpListener recebe uma solicitação, ele usa o URI raw em vez do URI convertido de http.sys como entrada para o Url propriedade.

O valor padrão para o unescapeRequestUrl atributo é true.

O UnescapeRequestUrl propriedade pode ser usada para obter o valor atual da unescapeRequestUrl atributo dos arquivos de configuração aplicável.

Exemplo

O exemplo de código a seguir mostra como configurar o HttpListener classe quando ele recebe uma solicitação para usar o URI raw em vez do URI convertido de http.sys como entrada para o Url propriedade.

<configuration>
  <system.net>
    <settings>
      <httpListener
        unescapeRequestUrl="false"
      />
    </settings>
  </system.net>
</configuration>

Informações do elemento

Namespace

System.Net

Nome de esquema

Arquivo de validação

Pode ser vazio

Consulte também

Referência

Esquema configurações de rede

HttpListenerElement

HttpListener

Url