WCF - Aumentare ReaderQuotas sul servizio REST
-
22-10-2019 - |
Domanda
Ho un servizio WCF REST che accetta una stringa JSON
Uno dei parametri è una grande stringa di numeri
In questo modo il seguente errore - che è visibile tracciando e l'utilizzo di SVC Trace Viewer
C'è stato un errore deserializzazione l'oggetto di tipo CarConfiguration. La quota di lunghezza tenore massimo stringa (8192) è stato superato durante la lettura dei dati XML. Questo contingente può essere aumentato modificando la proprietà MaxStringContentLength sulle XmlDictionaryReaderQuotas utilizzato durante la creazione del lettore XML.
Ora ho letto tutti i tipi di articoli che consigliano come rettificare questo
Tutti loro consiglia di aumentare le varie impostazioni di configurazione sul server e il client
es. Serializzare stringa in WebService chiamata
http: // bloggingabout .net / blogs / ramon / archive / 2008/08/20 / WCF-e-grande-messages.aspx
Così i miei config aspetto di file come questo
<webHttpBinding>
<binding name="webBinding" maxBufferSize="5242880" maxReceivedMessageSize="5242880" >
<readerQuotas maxDepth="5242880" maxStringContentLength="5242880" maxArrayLength="5242880" maxBytesPerRead="5242880" maxNameTableCharCount="5242880"/>
</binding>
</webHttpBinding>
...
...
...
<endpoint
address="/"
binding="webHttpBinding"
bindingConfiguration="webBinding"
Il mio problema è che posso cambiare questo sul server, ma non ci sono impostazioni di configurazione WCF sul client perché è un servizio REST e sto solo facendo una richiesta HTTP utilizzando l'oggetto WebClient
tutte le idee?
Soluzione
così si scopre avete bisogno di un URL fullly qualificata su l'indirizzo dell'endpoint, non un parente uno
chiamare un WCF REST servizio utilizzando JSON. quota di lunghezza (8192) ha superato
Altri suggerimenti
Questo errore non sarebbe accadendo sul client, in quanto le quote dei lettori sono una cosa WCF-only e WebClient / HttpWebRequest non fanno deserializzazione se stessi o far rispettare qualsiasi altro tipo di quote.
Quindi direi dire che è probabile si sta mettendo la configurazione nel posto sbagliato e non è stato scelto su.
Uno che o ... non si sta usando uno dei WCF DataContract Serializzatori manualmente sul lato client, vero?