我正在使用HttpClient通过https从C#可移植类库调用远程Web服务。我对Web服务的初始调用大约需要45秒。后续调用只需要一两秒钟。从JavaScript调用Web服务时,我在初始调用时没有类似的问题。有没有办法优化HttpClient以更快地进行初始调用?
答案 0 :(得分:1)
听起来延迟可能是服务器端。如果要调用C#Web服务,则需要在第一次调用时对c#web服务进行JIT编译。第一次通话可能比后续通话时间长得多。
隔离它是服务器端还是客户端问题。使用另一个客户端(浏览器,或启动客户端应用程序的另一个实例)首先调用相同的Web服务。然后使用您的应用程序与HTTPClient进行"初始"打电话来看看45秒延迟是否已经消失。
答案 1 :(得分:0)
你确定这是需要时间的HttpClient
电话吗?它可能是别的东西。例如:您是否在HttpMessageHandler
添加了HttpClient
?
我之前遇到过类似的问题,我们发现的根本原因是我们添加了一个客户端证书来验证请求。客户端证书是从LocalMachine加载的。现在,如果有许多并行请求,并且每次从LocalMachine加载证书。您的所有请求都将被阻止,直到为单个请求加载证书。它可能不是证书,而是您的案例中的其他内容。但最好确认是实际通话需要时间。