<Elemento httpListener> (impostazioni di rete)
Personalizza i parametri usati dalla HttpListener classe .
<Configurazione>
<system.net>
<Impostazioni>
<httpListener>
Sintassi
<httpListener
unescapeRequestUrl="true|false"
/>
Tipo
Attributi ed elementi
Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.
Attributi
Attributo | Descrizione |
---|---|
unescapeRequestUrl | Valore booleano che indica se un'istanza HttpListener usa l'URI senza caratteri di escape non elaborato anziché l'URI convertito. |
Elementi figlio
Nessuno.
Elementi padre
elemento | Descrizione |
---|---|
impostazioni | Configura le opzioni di rete di base per lo spazio dei nomi System.Net. |
Commenti
L'attributo unescapeRequestUrl indica se HttpListener usa l'URI non elaborato senza caratteri di escape anziché l'URI convertito in cui vengono convertiti valori con codifica percentuale e vengono eseguiti altri passaggi di normalizzazione.
Quando un'istanza HttpListener riceve una richiesta tramite il http.sys
servizio, crea un'istanza della stringa URI fornita da http.sys
e la espone come HttpListenerRequest.Url proprietà .
Il http.sys
servizio espone due stringhe URI di richiesta:
URI non elaborato
URI convertito
L'URI non elaborato è l'oggetto System.Uri fornito nella riga di richiesta di una richiesta HTTP:
GET /path/
Host: www.contoso.com
L'URI non elaborato fornito da http.sys
per la richiesta menzionata in precedenza è "/path/". Rappresenta la stringa che segue il verbo HTTP inviato in rete.
Il http.sys
servizio crea un URI convertito dalle informazioni fornite nella richiesta usando l'URI fornito nella riga di richiesta HTTP e l'intestazione Host per determinare il server di origine a cui deve essere inoltrata la richiesta. Questa operazione viene eseguita confrontando le informazioni della richiesta con un set di prefissi URI registrati. La documentazione di HTTP Server SDK fa riferimento a questo URI convertito come struttura HTTP_COOKED_URL.
Per poter confrontare la richiesta con i prefissi URI registrati, è necessario eseguire una normalizzazione alla richiesta. Per l'esempio precedente l'URI convertito sarà il seguente:
http://www.contoso.com/path/
Il http.sys
servizio combina il valore della Uri.Host proprietà e la stringa nella riga della richiesta per creare un URI convertito. Inoltre, http.sys
e la System.Uri classe esegue anche le operazioni seguenti:
Annulla l'escape di tutti i valori codificati in percentuale.
Converte i caratteri non ASCII con codifica percentuale in una rappresentazione di caratteri UTF-16. Si noti che i caratteri UTF-8 e ANSI/DBCS sono supportati e i caratteri Unicode (codifica Unicode usando il formato %uXXXX).
Esegue altri passaggi di normalizzazione, ad esempio la compressione del percorso.
Poiché la richiesta non contiene informazioni sulla codifica usata per i valori con codifica percentuale, potrebbe non essere possibile determinare la codifica corretta semplicemente analizzando i valori con codifica percentuale.
Vengono pertanto http.sys
fornite due chiavi del Registro di sistema per modificare il processo:
Chiave del Registro di sistema | Valore predefinito | Descrizione |
---|---|---|
EnableNonUTF8 | 1 | Se zero, http.sys accetta solo GLI URL con codifica UTF-8.Se diverso da zero, http.sys accetta anche URL con codifica ANSI o con codifica DBCS nelle richieste. |
FavorUTF8 | 1 | Se non è zero, http.sys tenta sempre di decodificare un URL come UTF-8. Se la conversione ha esito negativo e EnableNonUTF8 è diverso da zero, Http.sys quindi prova a decodificarla come ANSI o DBCS.Se zero (e EnableNonUTF8 è diverso da zero), http.sys tenta di decodificarlo come ANSI o DBCS. In caso contrario, prova una conversione UTF-8. |
Quando HttpListener riceve una richiesta, usa l'URI convertito da http.sys
come input alla Url proprietà .
È necessario supportare caratteri oltre a caratteri e numeri negli URI. Un esempio è l'URI seguente, che viene usato per recuperare le informazioni sul cliente per il numero cliente "1/3812":
http://www.contoso.com/Customer('1%2F3812')/
Si noti la barra con codifica percentuale nell'URI (%2F). Ciò è necessario, poiché in questo caso il carattere barra rappresenta i dati e non un delimitatore di percorso.
Il passaggio della stringa al costruttore URI comporterà l'URI seguente:
http://www.contoso.com/Customer('1/3812')/
La suddivisione del percorso nei segmenti comporta gli elementi seguenti:
Customer('1
3812')
Questa non è la finalità del mittente della richiesta.
Se l'attributo unescapeRequestUrl è impostato su false, quando HttpListener riceve una richiesta, usa l'URI non elaborato anziché l'URI convertito da http.sys
come input alla Url proprietà .
Il valore predefinito per l'attributo unescapeRequestUrl è true.
La UnescapeRequestUrl proprietà può essere utilizzata per ottenere il valore corrente dell'attributo unescapeRequestUrl dai file di configurazione applicabili.
Esempio
Nell'esempio seguente viene illustrato come configurare la HttpListener classe quando riceve una richiesta per usare l'URI non elaborato anziché l'URI convertito da http.sys
come input alla Url proprietà .
<configuration>
<system.net>
<settings>
<httpListener
unescapeRequestUrl="false"
/>
</settings>
</system.net>
</configuration>
Informazioni sull'elemento
Spazio dei nomi: System.Net
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per