Delen via


<het element httpListener> (netwerkinstellingen)

Hiermee past u parameters aan die door de HttpListener klasse worden gebruikt.

<Configuratie>
  <system.net>
    <Instellingen>
      <httpListener>

Syntax

<httpListener  
  unescapeRequestUrl="true|false"  
/>  

Type

Kenmerken en elementen

In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.

Kenmerken

Kenmerk Beschrijving
unescapeRequestUrl Een Booleaanse waarde die aangeeft of een HttpListener exemplaar de onbewerkte unescaped URI gebruikt in plaats van de geconverteerde URI.

Onderliggende elementen

Geen.

Bovenliggende elementen

Element Beschrijving
instellingen Hiermee configureert u basisnetwerkopties voor de System.Net naamruimte.

Opmerkingen

Het kenmerk unescapeRequestUrl geeft aan of HttpListener de onbewerkte unescaped URI wordt gebruikt in plaats van de geconverteerde URI waar eventuele procenten gecodeerde waarden worden geconverteerd en andere normalisatiestappen worden uitgevoerd.

Wanneer een HttpListener exemplaar een aanvraag ontvangt via de http.sys service, wordt er een exemplaar van de URI-tekenreeks gemaakt die wordt geleverd door http.sysen wordt deze weergegeven als de HttpListenerRequest.Url eigenschap.

De http.sys service maakt twee aanvraag-URI-tekenreeksen beschikbaar:

  • Onbewerkte URI

  • Geconverteerde URI

De onbewerkte URI is de System.Uri opgegeven in de aanvraagregel van een HTTP-aanvraag:

GET /path/

Host: www.contoso.com

De onbewerkte URI die wordt opgegeven door http.sys voor de hierboven genoemde aanvraag, is '/pad/'. Dit vertegenwoordigt de tekenreeks die volgt op de HTTP-bewerking die via het netwerk is verzonden.

De http.sys service maakt een geconverteerde URI op basis van de informatie in de aanvraag met behulp van de URI die is opgegeven in de HTTP-aanvraagregel en de hostheader om te bepalen naar welke oorspronkelijke server de aanvraag moet worden doorgestuurd. Dit wordt gedaan door de informatie van de aanvraag te vergelijken met een set geregistreerde URI-voorvoegsels. De DOCUMENTATIE van de HTTP Server SDK verwijst naar deze geconverteerde URI als de HTTP_COOKED_URL-structuur.

Om de aanvraag te kunnen vergelijken met geregistreerde URI-voorvoegsels, moet enige normalisatie naar de aanvraag worden uitgevoerd. Voor het bovenstaande voorbeeld ziet de geconverteerde URI er als volgt uit:

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

De http.sys service combineert de Uri.Host eigenschapswaarde en de tekenreeks in de aanvraagregel om een geconverteerde URI te maken. Bovendien http.sys doet de System.Uri klasse ook het volgende:

  • Hiermee worden alle procenten gecodeerde waarden ongedaan gemaakt.

  • Converteert procentgecodeerde niet-ASCII-tekens naar een UTF-16-tekenweergave. UTF-8- en ANSI/DBCS-tekens worden ondersteund, evenals Unicode-tekens (Unicode-codering met de indeling %uXXXX).

  • Voert andere normalisatiestappen uit, zoals padcompressie.

Omdat de aanvraag geen informatie bevat over de codering die wordt gebruikt voor met procent gecodeerde waarden, is het mogelijk niet mogelijk om de juiste codering te bepalen door alleen de met procenten gecodeerde waarden te parseren.

Daarom http.sys biedt twee registersleutels voor het wijzigen van het proces:

Registersleutel Standaardwaarde Beschrijving
EnableNonUTF8 1 Als nul is, http.sys accepteert alleen UTF-8-gecodeerde URL's.

Als dit niet nul is, http.sys accepteert ook URL's met ANSI-codering of MET DBCS gecodeerde URL's in aanvragen.
FavorUTF8 1 Als niet nul is, http.sys probeert u altijd eerst een URL te decoderen als UTF-8. Als die conversie mislukt en EnableNonUTF8 niet nul is, probeert Http.sys deze vervolgens te decoderen als ANSI of DBCS.

Als nul (en EnableNonUTF8 niet nul is), http.sys probeert het te decoderen als ANSI of DBCS. Als dat niet lukt, wordt een UTF-8-conversie geprobeerd.

Wanneer HttpListener een aanvraag wordt ontvangen, wordt de geconverteerde URI van http.sys gebruikt als invoer voor de Url eigenschap.

Er is behoefte aan ondersteunende tekens naast tekens en cijfers in URI's. Een voorbeeld is de volgende URI, die wordt gebruikt om klantgegevens op te halen voor klantnummer '1/3812':

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

Let op de met procenten gecodeerde slash in de URI (%2F). Dit is nodig, omdat in dit geval het slash-teken gegevens vertegenwoordigt en geen padscheidingsteken.

Het doorgeven van de tekenreeks aan de URI-constructor leidt tot de volgende URI:

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

Als u het pad splitst in de segmenten, resulteert dit in de volgende elementen:

Customer('1

3812')

Dit is niet de bedoeling van de afzender van de aanvraag.

Als het kenmerk unescapeRequestUrl is ingesteld op false, gebruikt het HttpListener de onbewerkte URI in plaats van de geconverteerde URI van http.sys als invoer voor de eigenschap wanneer de Url een aanvraag ontvangt.

De standaardwaarde voor het kenmerk unescapeRequestUrl is true.

De UnescapeRequestUrl eigenschap kan worden gebruikt om de huidige waarde van het kenmerk unescapeRequestUrl op te halen uit toepasselijke configuratiebestanden.

Voorbeeld

In het volgende voorbeeld ziet u hoe u de HttpListener klasse configureert wanneer deze een aanvraag ontvangt om de onbewerkte URI te gebruiken in plaats van de geconverteerde URI van http.sys als invoer voor de Url eigenschap.

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

Elementgegevens

Naamruimte: System.Net

Zie ook