2015-10-29 11 views
6

Desidero poter interrompere l'elaborazione di una richiesta se il JSON inviato all'azione del mio controller è troppo grande.Come interrompere l'elaborazione se JSON è troppo grande

Il limite di dimensione può variare in modo da non voglio codificare questo valore nel mio web.config

C'è un modo per controllare in mia azione controllori? Dire che il mio limite è 100kb, se va oltre non voglio sprecare i server CPU, voglio solo fermarmi e tornare subito.

+0

I non la penso così, sfortunatamente Il problema è che non c'è modo di sapere quanto sarà grande la rappresentazione JSON fino a quando non sarà stata creata. –

+0

D'accordo con @ChrisPratt, insieme a questo JSON minorato occuperà meno spazio da memorizzare, rispetto a quello leggibile dall'uomo. Potresti voler limitare l'esecuzione prima di convertirla in JSON. Ad esempio, se si esegue il rendering di un elenco di elementi, è possibile limitare il numero di elementi (con il paging o così via). Poco prima della conversione in JSON e l'invio al browser. – Rolice

risposta

3

C'è una tale impostazione per questo nella classe JSON (vedi codice qui sotto):

var jsonResult = Json(jsonString, JsonRequestBehavior.AllowGet); 
jsonResult.maxJsonLength = int.MaxValue; 
return jsonResult; 

Può anche essere fatto in configurazione come questa (web.config):

<configuration> 
    <system.web.extensions> 
    <scripting> 
     <webServices> 
      <jsonSerialization maxJsonLength="50000000"/> 
     </webServices> 
    </scripting> 
    </system.web.extensions> 
</configuration> 
Problemi correlati