<element httpListener> (nastavení sítě)
Přizpůsobí parametry používané HttpListener třídou.
<Konfigurace>
<system.net>
<Nastavení>
<httpListener>
Syntax
<httpListener
unescapeRequestUrl="true|false"
/>
Typ
Atributy a elementy
Následující části popisují atributy, podřízené prvky a nadřazené prvky.
Atributy
Atribut | Popis |
---|---|
unescapeRequestUrl | Logická hodnota, která označuje, jestli HttpListener instance používá nezpracovaný identifikátor URI místo převedeného identifikátoru URI. |
Podřízené elementy
Žádné
Nadřazené elementy
Prvek | Popis |
---|---|
zdroje dat | Konfiguruje základní síťové možnosti pro System.Net obor názvů. |
Poznámky
Atribut unescapeRequestUrl označuje, jestli HttpListener používá nezpracovaný unescaped URI místo převedeného identifikátoru URI, kde jsou převedeny hodnoty zakódované v procentech a jsou provedena další kroky normalizace.
HttpListener Když instance přijme požadavek prostřednictvím http.sys
služby, vytvoří instanci řetězce identifikátoru URI poskytnutého službou http.sys
a zpřístupní ji jako HttpListenerRequest.Url vlastnost.
Služba http.sys
zveřejňuje dva řetězce identifikátoru URI požadavku:
Nezpracovaný identifikátor URI
Převedený identifikátor URI
Nezpracovaný identifikátor URI je System.Uri uvedený v řádku požadavku HTTP:
GET /path/
Host: www.contoso.com
Nezpracovaný identifikátor URI, který http.sys
pro výše uvedený požadavek poskytuje, je /path/. Představuje řetězec následující za příkazem HTTP, který byl odeslán přes síť.
Služba http.sys
vytvoří převedený identifikátor URI z informací uvedených v požadavku pomocí identifikátoru URI zadaného na řádku požadavku HTTP a hlavičky hostitele k určení serveru původu, na který se má požadavek předat. To se provádí porovnáním informací z požadavku se sadou registrovaných předpon URI. Dokumentace k sadě HTTP Server SDK označuje tento převedený identifikátor URI jako strukturu HTTP_COOKED_URL.
Aby bylo možné porovnat požadavek s registrovanými předponami identifikátoru URI, je potřeba provést určitou normalizaci požadavku. U výše uvedeného vzorku by převedený identifikátor URI vypadal takto:
http://www.contoso.com/path/
Služba http.sys
zkombinuje Uri.Host hodnotu vlastnosti a řetězec v řádku požadavku a vytvoří převedený identifikátor URI. Kromě toho http.sys
a System.Uri třída také dělá následující:
Zruší uchycení všech procent zakódovaných hodnot.
Převede procenta kódované znaky, které nejsou ASCII, na reprezentaci znaků UTF-16. Všimněte si, že znaky UTF-8 a ANSI/DBCS jsou podporovány i znaky Unicode (kódování Unicode ve formátu %uXXXX).
Provede další kroky normalizace, například kompresi cesty.
Vzhledem k tomu, že požadavek neobsahuje žádné informace o kódování použitém pro hodnoty zakódované v procentech, nemusí být možné určit správné kódování pouze parsováním hodnot zakódovaných v procentech.
Proto http.sys
poskytuje dva klíče registru pro úpravu procesu:
Klíč registru | Výchozí hodnota | Popis |
---|---|---|
EnableNonUTF8 | 1 | Pokud je nula, http.sys přijímá pouze adresy URL s kódováním UTF-8.Pokud není nula, http.sys přijímá v požadavcích také adresy URL kódované ANSI nebo DBCS. |
FavorUTF8 | 1 | Pokud není nula, http.sys vždy se nejprve pokusí dekódovat adresu URL jako UTF-8. Pokud se převod nezdaří a EnableNonUTF8 není nulová, Http.sys pak se ji pokusí dekódovat jako ANSI nebo DBCS.Pokud je nula (a EnableNonUTF8 je nenulová), http.sys pokusí se ji dekódovat jako ANSI nebo DBCS. Pokud to nebude úspěšné, pokusí se o převod UTF-8. |
Když HttpListener obdrží požadavek, použije převedený identifikátor URI z jako http.sys
vstup do Url vlastnosti.
Kromě znaků a čísel v identifikátorech URI je potřeba mít podpůrné znaky. Příkladem je následující identifikátor URI, který slouží k načtení informací o zákazníkovi pro číslo zákazníka "1/3812":
http://www.contoso.com/Customer('1%2F3812')/
Všimněte si lomítka zakódovaného v procentech v identifikátoru URI (%2F). To je nezbytné, protože v tomto případě lomítko představuje data, nikoli oddělovač cesty.
Předání řetězce konstruktoru URI povede k následujícímu identifikátoru URI:
http://www.contoso.com/Customer('1/3812')/
Rozdělení cesty na její segmenty by vedlo k následujícím prvkům:
Customer('1
3812')
Toto není záměr odesílatele žádosti.
Pokud je atribut unescapeRequestUrl nastaven na hodnotu false, pak při HttpListener přijetí požadavku použije nezpracovaný identifikátor URI místo převedeného identifikátoru URI z http.sys
jako vstup do Url vlastnosti.
Výchozí hodnota atributu unescapeRequestUrl je true.
Vlastnost UnescapeRequestUrl lze použít k získání aktuální hodnoty atributu unescapeRequestUrl z příslušných konfiguračních souborů.
Příklad
Následující příklad ukazuje, jak nakonfigurovat HttpListener třídu, když obdrží požadavek na použití nezpracovaného identifikátoru URI místo převedeného identifikátoru URI jako http.sys
vstupu na Url vlastnost.
<configuration>
<system.net>
<settings>
<httpListener
unescapeRequestUrl="false"
/>
</settings>
</system.net>
</configuration>
Informace o elementu
Obor názvů: System.Net
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro