Condividi tramite


<webMessageEncoding>

Consente di leggere e scrivere contenuto binario "non elaborato" in formato XML di testo normale, JavaScript Object Notation (JSON) quando viene usato in un'associazione Windows Communication Foundation (WCF).

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding>
          <webMessageEncoding>

Sintassi

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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributes

Attribute Description
maxReadPoolSize Quantità di messaggi che possono essere letti simultaneamente senza allocare nuovi lettori. Le dimensioni del pool più grandi rendono il sistema più tollerante ai picchi di attività a costo di un working set più grande. Il valore predefinito è 64 lettori per ognuno dei codificatori interni (testo, JSON e "raw").

L'aumento di questo numero aumenta il consumo di memoria, ma prepara il codificatore a gestire picchi improvvisi di messaggi in arrivo perché è in grado di usare i lettori del pool già creati anziché crearne di nuovi.
maxWritePoolSize Quantità di messaggi che possono essere inviati contemporaneamente senza allocare nuovi writer. Le dimensioni del pool più grandi rendono il sistema più tollerante ai picchi di attività a costo di un working set più grande. Il valore predefinito è 16 writer per ognuno dei codificatori interni (testo, JSON e "raw").

L'aumento di questo numero aumenta il consumo di memoria, ma prepara il codificatore a gestire picchi improvvisi di messaggi in uscita perché è in grado di usare i writer del pool già creati invece di crearne di nuovi.
writeEncoding Specifica la codifica del set di caratteri da utilizzare per l'emissione di messaggi nell'associazione. I valori validi sono:

- UnicodeFffeTextEncoding: codifica Big Endian Unicode.
- Utf16TextEncoding: codifica Unicode.
- Utf8TextEncoding: codifica a 8 bit.

Il valore predefinito è Utf8TextEncoding. Questo attributo è di tipo Encoding.

Elementi figli

Elemento Description
<readerQuotas> Definisce i vincoli sulla complessità dei messaggi SOAP che possono essere elaborati dagli endpoint configurati con questa associazione. Questo elemento è di tipo XmlDictionaryReaderQuotasElement.

Elementi padre

Elemento Description
<rilegatura> Definisce tutte le funzionalità di associazione dell'associazione personalizzata.

Osservazioni:

La codifica è il processo di trasformazione di un messaggio in una sequenza di byte. La decodifica è il processo inverso. Questi processi richiedono la specifica di una codifica dei caratteri.

L'elemento webMessageEncoding funziona delegando a una serie di codificatori interni per gestire le codifiche XML e JSON di testo normale e i dati binari "non elaborati". Questa delega viene eseguita da un codificatore di messaggi composito.

Questo elemento di associazione e il relativo codificatore composito vengono usati per controllare la codifica in scenari che non usano la messaggistica SOAP usata dall'elemento webHttpBinding . Questi scenari includono "Plain Old XML" (POX), Representational State Transfer (REST), Really Simple Syndication (RSS) e Atom syndication e Asynchronous JavaScript and XML (AJAX). Il codificatore di messaggi compositi non supporta SOAP o WS-Addressing.

L'elemento di associazione può essere configurato con una codifica dei caratteri di scrittura usando l'attributo writeEncoding . Il valore fornito Encoding specifica il comportamento di scrittura per i casi JSON e XML testuali. In lettura, tutte le codifiche dei messaggi e la codifica del testo valide vengono riconosciute.

maxReadPoolSize e maxWritePoolSize possono anche essere usati per impostare il numero massimo di lettori e writer da allocare rispettivamente. Per impostazione predefinita vengono allocati 64 lettori e 16 writer.

I vincoli di complessità predefiniti vengono impostati anche usando l'elemento <readerQuotas> per proteggersi da una classe di attacchi Denial of Service (DOS) che tentano di usare la complessità dei messaggi per collegare le risorse di elaborazione degli endpoint.

Example

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

Vedere anche