Dela via


<webMessageEncoding>

Gör det möjligt att läsa och skriva Oformaterat XML-meddelande, JSON-meddelandekodningar (JavaScript Object Notation) och "raw"-binärt innehåll när det används i en WCF-bindning (Windows Communication Foundation).

<Konfiguration>
  <system.serviceModel>
    <Bindningar>
      <customBinding>
        <Bindande>
          <webMessageEncoding>

Syntax

<webMessageEncoding maxReadPoolSize="Integer"
                    maxWritePoolSize="Integer"
                    writeEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding" />

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attribut

Attribut Beskrivning
maxReadPoolSize Mängden meddelanden som kan läsas samtidigt utan att nya läsare allokeras. Större poolstorlekar gör systemet mer tolerant mot aktivitetstoppar på bekostnad av en större arbetsuppsättning. Standardvärdet är 64 läsare för var och en av de inre kodarna (text, JSON och "raw").

Att öka det här antalet ökar minnesförbrukningen, men förbereder kodaren för att hantera plötsliga ökningar av inkommande meddelanden eftersom den kan använda läsare från poolen som redan har skapats i stället för att skapa nya.
maxWritePoolSize Mängden meddelanden som kan skickas samtidigt utan att tilldela nya författare. Större poolstorlekar gör systemet mer tolerant mot aktivitetstoppar på bekostnad av en större arbetsuppsättning. Standardvärdet är 16 skrivare för var och en av de inre kodarna (text, JSON och "raw").

Att öka det här antalet ökar minnesförbrukningen, men förbereder kodaren för att hantera plötsliga ökningar av utgående meddelanden eftersom den kan använda skrivare från poolen som redan har skapats i stället för att skapa nya.
writeEncoding Anger den teckenuppsättningskodning som ska användas för att generera meddelanden på bindningen. Giltiga värden är:

- UnicodeFffeTextEncoding: Unicode Big Endian-kodning.
- Utf16TextEncoding: Unicode-kodning.
- Utf8TextEncoding: 8-bitars kodning.

Standardvärdet är Utf8TextEncoding. Det här attributet är av typen Encoding.

Underordnade element

Element Beskrivning
<readerQuotas> Definierar begränsningarna för komplexiteten i SOAP-meddelanden som kan bearbetas av slutpunkter som konfigurerats med den här bindningen. Det här elementet är av typen XmlDictionaryReaderQuotasElement.

Överordnade element

Element Beskrivning
<Bindande> Definierar alla bindningsfunktioner för den anpassade bindningen.

Kommentarer

Kodning är processen att omvandla ett meddelande till en sekvens med byte. Avkodning är den omvända processen. Dessa processer kräver specifikation av en teckenkodning.

Elementet webMessageEncoding fungerar genom att delegera till en serie inre kodare för att hantera xml- och JSON-kodningar med oformaterad text och "råa" binära data. Den här delegeringen görs av en sammansatt meddelandekodare.

Det här bindningselementet och dess sammansatta kodare används för att styra kodningen i scenarier som inte använder SOAP-meddelanden som används av -elementet webHttpBinding . Dessa scenarier inkluderar "Plain Old XML" (POX), Representational State Transfer (REST), Really Simple Syndication (RSS) och Atom syndication samt Asynkron JavaScript och XML (AJAX). Den sammansatta meddelandekodaren stöder inte SOAP eller WS-Addressing.

Bindningselementet kan konfigureras med en skrivteckenkodning med hjälp writeEncoding av attributet . Det angivna Encoding värdet anger beteendet vid skrivning för JSON- och Text-XML-ärendena. Vid läsning tolkas alla giltiga meddelandekodning och textkodning.

maxReadPoolSize och maxWritePoolSize kan också användas för att ange det maximala antalet läsare och skribenter som ska tilldelas respektive. Som standard tilldelas 64 läsare och 16 skrivare.

Standardbegränsningar för komplexitet anges också med hjälp av elementet <readerQuotas> för att skydda mot en dos-attack (Denial of Service) som försöker använda meddelandekomplexitet för att binda upp resurser för slutpunktsbearbetning.

Exempel

<webMessageEncoding maxReadPoolSize="256"
                    maxWritePoolSize="128"
                    messageVersion="None"
                    textEncoding="utf-8" />

Se även