2011-06-06 4 views
7

I gone through this MSDN link but could not get enough detailscosa è <readerQuotas> in Binding WCF?

Qualcuno può spiegarmi uno scenario in cui e perché ho bisogno di impostare questo valore.

Ho trovato l'impostazione quando stavo cercando di inviare un oggetto Contratto dati al metodo di servizio e ottenevo un'eccezione Il server remoto ha restituito un errore: Non trovato.,

Il mio contratto di dati sta avendo la proprietà Elenco <> e stava ottenendo un'eccezione se l'elenco contiene 7 oggetto funzionava correttamente con 6 oggetto.

Immagino sia stato un problema con il contratto Data Size.

Quando ho cambiato il mio vincolante nel file di configurazione

<readerQuotas maxDepth="64" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="4096" /> 

a

<readerQuotas maxDepth="128" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="4096" /> 

l'oggetto Data Contratto raggiunto servizio per l'elaborazione.

risposta

8

Le impostazioni readerQuota vengono utilizzate per limitare i binding come specificato dagli attributi. Se una richiesta supera uno di questi limiti, il servizio WCF rifiuterà automaticamente la richiesta (molto bassa sullo stack delle comunicazioni, credo) per fare quanto meno possibile sulla richiesta.

L'idea è che il servizio esegua il minor numero di risorse possibile per soddisfare la richiesta (se supera un determinato limite) per aiutare a respingere Denial-of-Service attacks - DDOS.

Si noti che i limiti readQuota possono essere impostati su server e client. Ciò consente ai client di essere protetti dai server fraudolenti e di proteggere i server.