2017-05-11 1 views
2

J'ai une API Web ASP.net qui expire à environ ~ 100 secondes. L'une de mes méthodes d'action nécessite plus de temps pour terminer une requête.Modification du délai de demande dans Asp.net WebAPI

Après avoir passé plusieurs liens, j'ai déjà compris que ce qui suit ne marchera pas

a) executionTimeout & ScriptTimeout comme pipeline de demande est complètement asynchrone et ces valeurs sont pour le pipeline synchrone à l'époque.

b) [AsyncTimeout(seconds)] attribut comme il applique uniquement pour MVC applications Web et ASP Web api ne fait pas référence system.web.mvc

est-il une autre approche sur le contrôle de délai d'attente pour ce scénario?

+0

Je vote pour clore cette question hors-sujet parce que cette question ne s'applique pas. –

Répondre

1

Apparaît qu'il n'y a pas de délai imposé sur l'API Web. Le délai d'attente était sur le côté client. Après avoir changé la valeur HttpClient.Timeout cela a fonctionné.

+0

Frank - Pouvez-vous fournir un lien ou quelque chose? Nous voyons des requêtes WebAPI en direct pendant des jours, via les "Processus de travail" dans IIS8. Utilisation de la valeur par défaut pour system.web/executionTimeout. Nous voulons les tuer après un certain temps. –

+0

Aucune valeur à ma connaissance n'annule automatiquement la requête du côté API Web. La seule façon de le faire serait pour le client (par exemple HttpClient) de définir une valeur de délai de requête. La demande est ensuite annulée côté client, ce qui entraîne l'annulation de la connexion. Une fois la connexion interrompue, le serveur reçoit une notification et fait une bulle jusqu'à la pile ASP qui signale l'annulation de la requête. Si vous propagez le jeton d'annulation (à partir de l'une des méthodes d'action de votre contrôleur API), il doit être signalé. –