2014-05-13 16 views
10

sto utilizzando metodi asincroni nei miei controllori WebAPI:Configurare richiesta di timeout per i controller WebAPI

public async Task<HttpResponseMessage> SampleMethod(int subscriptionNumber, DateTime departureDate) 
{ 
    // [...] 
} 

Come si configura il timeout di richiesta? L'operazione può richiedere fino a un paio di minuti e devo assicurarmi che la richiesta non vada in timeout.

In MVC è presente un attributo denominato [AsyncTimeout]. C'è un equivalente in WebApi? Può essere configurato globalmente?

risposta

7

Buona domanda, mi sento di raccomandare a gestire questo da lato client - è sempre possibile specificare le impostazioni di timeout nel codice del consumo, anche se è l'Ajax:

$.ajax({ 
url: "/ajax_json_echo/", 
timeout: 1000, 
... 
+1

Sta dicendo che IIS/ASP.NET/WebApi2 non ha timeout incorporati? – jgauffin

+2

Sì, non hanno niente finora. WebAPI supporta i token di cancellazione per annullare l'operazione, in modo che tu possa provare a utilizzare CancellationTokenSource.CancelAfter per ottenere ciò, ma come ho accennato, dal codice –

+1

Anche il seguente estratto rivela un altro motivo: "Il modo per annullare le richieste HTTP è per annullarle direttamente su HttpClient, poiché le richieste multiple possono riutilizzare le connessioni TCP all'interno di un singolo HttpClient e quindi non è possibile annullare in modo sicuro una singola richiesta senza influire anche su altre richieste. " –

Problemi correlati