<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.sys
e 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