我正在使用RestSharp来使用REST Web服务,并且会在很短的时间内拨打大量的电话。
API的文档强烈建议使用持久HTTP连接来执行此操作,但是我很难使用RestSharp。
我尝试在请求中添加“Connection:Keep-alive”标头,但是当我这样做时,请求失败并出现以下错误 - “可能无法使用此属性设置Keep-Alive和Close。”
我可以不在RestSharp中使用此标头,还是需要做其他事情来启用它?
有人可以帮忙吗?感谢。
答案 0 :(得分:6)
要得到一个好的答案,你需要问一个好问题。它在文档中的位置是这样说的吗? (链接/参考?)有多少请求是“大量”?另外,如果您发布代码以了解如何将Connection: Keep-Alive
添加到http标头中,则此处的某些人可能会对您的技术发表评论并帮助您解决特定的编程问题。
此外,传出的HttpRequests上可能已经存在Connection: Keep-Alive
!请使用Fiddler或WireShark查看。我已经看过一些博客文章,其中包含了使用Connection: Keep-Alive
标题而没有任何额外配置的RestSharp请求的wireshark捕获。例如,在使用RestSharp作为使用者测试其他mvc3功能时,Jimmy Bogard使用已具有Connection: Keep-Alive
标头的fiddler捕获其RestSharp请求。
显然,它也是内置.Net类(如System.Net.Webclient)使用Connection: Keep-Alive
的默认行为。参考Does WebClient use KeepAlive?
我认为,使用RestSharp以最佳方式使用RestSharp,而不是配置RestSharp本身。如果要确保重用连接,则需要确保使用RestSharp允许将一个RestClient实例保留在范围内,并在针对同一主机的多个请求中重用它。