【问题标题】:C# RestSharp RestClient failed after 100 request to the same APIC# RestSharp RestClient 在向同一 API 发出 100 次请求后失败
【发布时间】:2019-02-08 11:04:35
【问题描述】:

我在使用 RestSharp RestClient 时遇到问题。我尝试在一个循环中发出多个请求,但在第 99 个请求之后总是失败。

for (int i = 0; i < 120; i++)
{
    Console.WriteLine($"Count : {i}");
    try
    {
        var request = new RestRequest("/endpoint/0016GMLCLT00000007456", Method.GET)
        {
            RequestFormat = DataFormat.Json,
            JsonSerializer = new JsonDeserializer()
        };

        request.AddParameter("accepteEmail", "true");

        var response = RestClient.Execute<AuthenticateResponse>(request);

        Console.WriteLine($"API TEST : {response.Content}");
    }
    catch
    {
        Console.WriteLine($"API TEST : FAIL");
    }
}

当我执行代码时,我可以在我的终端上看到这个

Count : 97
API TEST : {"response":"YES","description":"you did it"}
Count : 98
API TEST : {"response":"YES","description":"you did it"}
Count : 99
API TEST :
Count : 100
API TEST :
Count : 101
API TEST :

为什么它工作了 99 次,然后我什么都没有了??

编辑:我在 JAVA 中完成了相同的代码,并在 POSTMAN 中尝试了 120 次请求迭代,它正在工作。它也适用于 HTTP URL,但 100 次后不适用于 HTTPS。我将其添加到代码中以查看问题

 Console.WriteLine($"API TEST : {response.ErrorMessage}");

它告诉我

 The underlying connection was closed: An unexpected error occurred on a send

【问题讨论】:

  • 显然它不会抛出异常。响应不返回任何内容。必须与 API 相关。
  • @SeckinCelik,我也这么认为,但我在 Java 中尝试过同样的方法,它正在工作。问题不在于 API。
  • 你是在本地执行这个吗?还是在某处的服务器上运行?
  • @AlexKeySmith 它在某处的服务器上运行,而不是在本地运行
  • 作为更一般的评论,在进行大规模 http 连接时要寻找的各种东西是docs.microsoft.com/en-us/dotnet/api/…

标签: c# for-loop request restsharp


【解决方案1】:

'Execute' 的异常不会被抛出,但在 'ErrorException' 响应属性中可用。并且您需要在执行请求后检查该属性是否为空。 对于您的情况,您需要添加如下内容:

var response = RestClient.Execute<AuthenticateResponse>(request);

if (response.ErrorException == null)
{
    Console.WriteLine($"API TEST : {response.Content}");
}
else
{
    Console.WriteLine($"API TEST : FAIL {response.ErrorException.Message}");
}

【讨论】:

  • (意见)这听起来像是一个绝妙的设计。
  • 我已经这样做了,并在我的问题的编辑区给出了答案。它告诉我底层连接已关闭:发送时发生意外错误
猜你喜欢
  • 2022-07-18
  • 2013-12-09
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
相关资源
最近更新 更多