我正在使用 RestSharp 来使用 REST 网络服务,并将在短时间内进行大量调用。
API 的文档强烈建议使用持久 HTTP 连接来执行此操作,但是我正在努力使它与 RestSharp 一起使用。
我已尝试将“Connection: Keep-alive” header 添加到请求中,但是当我这样做时,请求失败并出现以下错误 - “可能无法使用此属性设置 Keep-Alive 和 Close。”
我不能将此 header 与 RestSharp 一起使用,还是我需要做其他事情才能启用它?
有人可以帮忙吗?谢谢。
最佳答案
要获得好的答案,您需要提出一个好的问题。它在文档的哪个位置说了这个? (链接/引用?)“大容量”有多少请求?此外,如果您发布有关如何将 Connection: Keep-Alive
添加到您的 http header 的代码,这里的人可能会评论您的技术并帮助您解决特定的编程问题。
此外,Connection: Keep-Alive
可能已经存在于传出的 HttpRequest 中!使用 Fiddler 查看或 WireShark .我看过一些博客文章,其中包含 RestSharp 请求的 wireshark 捕获,这些请求具有 Connection: Keep-Alive
header ,但没有任何额外的配置。例如,在使用 RestSharp 作为消费者测试其他 mvc3 功能时,Jimmy Bogard使用已经具有 Connection: Keep-Alive
header 的 fiddler 捕获他的 RestSharp 请求。
显然它也是内置 .Net 类的默认行为,如 System.Net.Webclient使用 Connection: Keep-Alive
。引用 Does WebClient use KeepAlive?
我认为,使用 keep alive 与以最佳方式使用 RestSharp 的代码有关,而不是配置 RestSharp 本身。如果您想确保您的连接被重用,您需要通过在范围内保留一个 RestClient 实例并在针对同一主机的多个请求中重用它来确保您对 RestSharp 的使用允许这样做。
关于http - 与 RestSharp 的持久 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10977907/