2013-05-08 6 views
11

Ho un metodo API Web che restituisce un elenco di eventi:Come modificare le impostazioni della dimensione di risposta consentite per un'applicazione Web API?

public HttpResponseMessage GetEvents() 
{ 
... 
} 

Il mio Service supporta entrambe le risposte XML e JSON utilizzando DataContractSerializer (per XML) e DataContractJsonSerializer (per JSON).

La dimensione della risposta potrebbe essere pari a 30 MB.

Qual è la dimensione di risposta consentita predefinita nell'API Web ASP.NET ospitata in IIS?

Come modificare le impostazioni di fabbrica?

Qual è la procedura migliore per restituire dati così grandi (anche se non è così grande)?

Dovrei comprimere la risposta?

Inoltre, potremmo ottenere una richiesta al secondo.

Grazie

risposta

11

Non sono sicuro dei tuoi problemi. Perché Response non hanno limitato la dimensione. Possiamo limitare la dimensione della risposta aggiungendo più parametri Content-Length nell'intestazione della risposta. Quindi presumo voi hanno ottenuto due problemi, come di seguito:

1. Richiesta ottenuto limitazione: per risolvere il problema è necessario aumentare la dimensione richiesta possa ricevere risposta grandi dimensioni. Per aumentare richiesta dimensioni che si mette in web.config come di seguito:

<system.web> 
<httpRuntime maxRequestLength="2147483647" /> 

2. Hai buffer di risposta il formato è un'eccezione limitazione:

segui il link da MSDN.

EDIT:

Qual è la dimensione di risposta consentita predefinita in ASP.NET Web API ospitata in IIS?

Le dimensioni della risposta otterranno automaticamente le dimensioni in base al formato del messaggio che inseriamo. E ha limitazioni sulla dimensione della risposta. Il HttpReponseMessage in realtà è una risposta simile che ho postato sopra.

Qual è la procedura migliore per restituire dati così grandi (anche se non è così grande)?

Si consiglia di prendere link. Le migliori pratiche per gestire i dati sono convertite in dati binari e trasferite come tante piccole parti.

Dovrei comprimere la risposta?

A seconda del contesto. IIS 7.0 ti consentono già di configurare la risposta zip, ma fai attenzione al codice che già supporta la risposta zip o meno.

+1

La mia domanda era sulla dimensione risposta in ASP.NET MVC Web API Servizi. –

+0

Questo collegamento è per pagine ASP con limite di buffer di 4 MB. Non penso che le stesse impostazioni dovrebbero applicarsi alle API Web? –

+1

Sono uguali, il Web Api HttpResponseMessage è appena wrapper su http Response. –

6

provare questo codice nel tuo web.config ha risolto il mio problema

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