HttpListenerElement.UnescapeRequestUrl Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un valore che indica se HttpListener utilizza l'URI senza codice di escape non elaborato anziché l'URI convertito.
public:
property bool UnescapeRequestUrl { bool get(); };
[System.Configuration.ConfigurationProperty("unescapeRequestUrl", DefaultValue=true, IsRequired=false)]
public bool UnescapeRequestUrl { get; }
[<System.Configuration.ConfigurationProperty("unescapeRequestUrl", DefaultValue=true, IsRequired=false)>]
member this.UnescapeRequestUrl : bool
Public ReadOnly Property UnescapeRequestUrl As Boolean
Valore della proprietà
Valore booleano che indica se HttpListener utilizza l'URI senza codice di escape non elaborato anziché l'URI convertito.
- Attributi
Commenti
La UnescapeRequestUrl proprietà indica se HttpListener viene usato l'URI non conscaped non elaborato anziché l'URI convertito in cui vengono convertiti valori con codifica percentuale e vengono eseguiti altri passaggi di normalizzazione.
Quando un'istanza riceve una HttpListener 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'URI System.Uri fornito nella riga di richiesta di una richiesta HTTP:
GET /path/
Host: www.contoso.com
L'URI non elaborato fornito dalla http.sys
richiesta precedente è "/path/". Rappresenta la stringa che segue il verbo HTTP come inviato sulla 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 di HTTP_COOKED_URL .
Per poter confrontare la richiesta con i prefissi dell'URI registrati, è necessario eseguire alcune 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 di 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 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 solo analizzando i valori con codifica percentuale.
Fornisce pertanto http.sys
due chiavi del Registro di sistema per la modifica del processo:
Chiave del Registro di sistema | Valore predefinito | Descrizione |
---|---|---|
EnableNonUTF8 | 1 | Se zero, http.sys accetta solo URL con codifica UTF-8.Se non zero, http.sys accetta anche URL codificati con codifica ANSI o DBCS nelle richieste. |
FavorUTF8 | 1 | Se non zero, tenta sempre di decodificare un URL come UTF-8 per primo. Se tale conversione ha esito negativo e EnableNonUTF8 non è zero, http.sys Http.sys tenta di decodificarlo come ANSI o DBCS.Se zero (e EnableNonUTF8 è diverso da zero), http.sys tenta di decodificarlo come ANSI o DBCS; se non è riuscito, prova una conversione UTF-8. |
Quando HttpListener riceve una richiesta, usa l'URI convertito da http.sys
come input alla Url proprietà.
È necessario supportare i caratteri oltre ai caratteri e ai numeri negli URI. Un esempio è l'URI seguente, usato per recuperare le informazioni sui clienti per il numero di 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 della barra rappresenta i dati e non un delimitatore di percorso.
Il passaggio della stringa al costruttore URI porterà all'URI seguente:
http://www.contoso.com/Customer('1/3812')/
La suddivisione del percorso nei segmenti comporta l'inserimento degli elementi seguenti:
Customer('1
3812')
Non è la finalità del mittente della richiesta.
Se la UnescapeRequestUrl proprietà è impostata su false, quando HttpListener riceve una richiesta, usa l'URI non elaborato anziché l'URI convertito da http.sys
come input alla Url proprietà.