C#Hammock库RestClient.BeginRequest阻止当前线程
本文关键字:前线 线程 RestClient BeginRequest C#Hammock | 更新日期: 2023-09-27 18:21:37
我正在使用很棒的Hammock REST库(https://github.com/danielcrenna/hammock)对于.NET C#,我遇到了RestClient.BeginRequest的问题。在我的代码中第一次调用这个方法时,它会阻塞当前线程整整15秒。我觉得这个方法是一个异步操作,因为它返回IAsyncResult并接受回调——它应该立即返回,对吧?
我知道BeginRequest有问题,因为调试会话会显示它挂在特定的代码行上——换句话说,这个问题与互联网连接问题或REST资源和本地机器之间的延迟无关。
我可以深入研究Hammock的源代码,但其中非常令人困惑——以前有人遇到过这个问题吗?这只是Hammock中的一个错误,还是预期的行为?我很难找到很多文件。提前感谢您的帮助!
您使用SSL/TLS连接到的终点是什么?如果是这样,有时这些延迟可能是由于客户端试图检查SSL证书的吊销列表造成的。在.NET中,您可以使用以下代码更改吊销模式。
client.ClientCredentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
我不知道你怎么能在哈莫克做到这一点。
我认为这是Dotnet webclient/httprequest的一个属性,特别是,它似乎在第一个请求时检查机器的代理设置。
我发现,通过在app.config中显式设置代理,你可以获得很大的速度。或者,我认为你可以在另一个线程上手动发出第一个请求。