J'ai un client restsharp et demande mis en place comme ceci:RestSharp Délai d'attente ne fonctionne pas
var request = new RestRequest();
request.Method = Method.POST;
request.AddParameter("application/json", jsonBody, ParameterType.RequestBody);
request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
request.Timeout = -1;
request.ReadWriteTimeout = -1;
var url = $"http://{ipAddress}/api/calculate";
var client = new RestClient();
client.BaseUrl = new Uri(url);
client.Timeout = -1;
client.ReadWriteTimeout = -1;
var response = client.Execute(request);
Cette demande va prendre un certain temps pour terminer, à environ 30 minutes. Maintenant, je sais qu'il y a des manières plus élégantes de faire ceci, mais, pour cette demande, je dois le faire comme ceci.
Ce client RestSharp et cette requête sont exécutés dans le service Windows. Lorsque le service exécute la requête, il déclenche TimoutException et le délai maximal de requête est d'environ 40 secondes.
Pour une raison quelconque, le délai d'attente que je définis ne fonctionne pas dans ce cas.
Quelqu'un a une solution pour cela?
Merci pour la réponse. Alors, que suggérez-vous que je fasse pour mettre un temps illimité au timeout? –
Tout d'abord, je diviserais l'opération en opérations de démarrage, d'état et de résultat. Passez l'appel, renvoyez un jeton, puis vérifiez l'état. Enfin, obtenez le résultat enregistré. Si ce n'est pas faisable, alors je suggère de faire le temps d'attente aussi longtemps que vous le pouvez et espérer le meilleur. Si vous contrôlez l'API, optez pour ce qui se cache derrière la porte n ° 1. –
Vous aviez raison. Dans la documentation officielle, il y a un -1 pour un délai d'attente illimité. Je l'ai mis comme Int32.MaxValue et cela a fonctionné. Merci mon pote! –