Partilhar via


<elemento httpListener> (Definições de Rede)

Personaliza os parâmetros utilizados pela HttpListener classe.

<configuração>
  <system.net>
    <definições>
      <httpListener>

Syntax

<httpListener  
  unescapeRequestUrl="true|false"  
/>  

Tipo

Atributos e Elementos

As secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
unescapeRequestUrl Um valor booleano que indica se uma HttpListener instância utiliza o URI não agregado não processado em vez do URI convertido.

Elementos Subordinados

Nenhum.

Elementos Principais

Elemento Descrição
definições Configura as opções de rede básicas para o System.Net espaço de nomes.

Observações

O atributo unescapeRequestUrl indica se HttpListener utiliza o URI não paisagens não processados em vez do URI convertido onde os valores codificados por percentagem são convertidos e são dados outros passos de normalização.

Quando uma HttpListener instância recebe um pedido através do http.sys serviço, cria uma instância da cadeia de URI fornecida pelo http.syse expõe-a como a HttpListenerRequest.Url propriedade.

O http.sys serviço expõe duas cadeias de URI de pedido:

  • URI não processado

  • URI convertido

O URI não processado é o System.Uri fornecido na linha de pedido de um pedido HTTP:

GET /path/

Host: www.contoso.com

O URI não processado fornecido pelo http.sys para o pedido mencionado acima é "/path/". Isto representa a cadeia que segue o verbo HTTP à medida que foi enviado através da rede.

O http.sys serviço cria um URI convertido a partir das informações fornecidas no pedido com o URI fornecido na linha de pedido HTTP e o cabeçalho anfitrião para determinar o servidor de origem para o qual o pedido deve ser reencaminhado. Isto é feito ao comparar as informações do pedido com um conjunto de prefixos de URI registados. A documentação do SDK do Servidor HTTP refere-se a este URI convertido como a estrutura HTTP_COOKED_URL.

Para poder comparar o pedido com prefixos de URI registados, é necessário fazer alguma normalização com o pedido. Para o exemplo acima do URI convertido seria o seguinte:

http://www.contoso.com/path/

O http.sys serviço combina o valor da Uri.Host propriedade e a cadeia na linha de pedido para criar um URI convertido. Além disso, http.sys e a System.Uri classe também faz o seguinte:

  • Anula a fuga de todos os valores codificados por percentagem.

  • Converte carateres não ASCII codificados por percentagem numa representação de carateres UTF-16. Tenha em atenção que os carateres UTF-8 e ANSI/DBCS são suportados, bem como carateres Unicode (codificação Unicode com o formato %uXXXX).

  • Executa outros passos de normalização, como compressão de caminho.

Uma vez que o pedido não contém informações sobre a codificação utilizada para valores codificados por percentagem, poderá não ser possível determinar a codificação correta apenas ao analisar os valores codificados por percentagem.

Por conseguinte, http.sys fornece duas chaves de registo para modificar o processo:

Chave do Registo Valor Predefinido Description
EnableNonUTF8 1 Se zero, http.sys aceita apenas URLs codificados utF-8.

Se não for zero, http.sys também aceita URLs codificados por ANSI ou codificados por DBCS em pedidos.
FavorUTF8 1 Se não for zero, http.sys tenta sempre descodificar um URL como UTF-8 primeiro; se essa conversão falhar e EnableNonUTF8 não for zero, Http.sys tenta descodificá-lo como ANSI ou DBCS.

Se zero (e EnableNonUTF8 não for zero), http.sys tentará descodificá-lo como ANSI ou DBCS; se isso não for bem-sucedido, tentará uma conversão UTF-8.

Quando HttpListener recebe um pedido, utiliza o URI convertido como http.sys entrada para a Url propriedade.

É necessário suportar carateres para além de carateres e números em URIs. Um exemplo é o seguinte URI, que é utilizado para obter informações do cliente para o número de cliente "1/3812":

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

Tenha em atenção a barra codificada por percentagem no Uri (%2F). Isto é necessário, uma vez que, neste caso, o caráter de barra representa dados e não um delimitador de caminho.

A passagem da cadeia para o construtor Uri levará ao seguinte URI:

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

Dividir o caminho nos respetivos segmentos resultaria nos seguintes elementos:

Customer('1

3812')

Esta não é a intenção do remetente do pedido.

Se o atributo unescapeRequestUrl estiver definido como falso, quando recebe HttpListener um pedido, utiliza o URI não processado em vez do URI convertido como http.sys entrada para a Url propriedade.

O valor predefinido para o atributo unescapeRequestUrl é verdadeiro.

A UnescapeRequestUrl propriedade pode ser utilizada para obter o valor atual do atributo unescapeRequestUrl a partir de ficheiros de configuração aplicáveis.

Exemplo

O exemplo seguinte mostra como configurar a HttpListener classe quando recebe um pedido para utilizar o URI não processado em vez do URI convertido como http.sys entrada para a Url propriedade.

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

Informações do Elemento

Espaço de nomes: System.Net

Ver também