问题 为什么我在RestSharp中的初始调用真的很慢?但其他人之后非常快


我正在使用RESTSHARP调用WEB API,它们工作正常。但是,对API的初始调用(无论是什么调用)有时最多可能需要10秒才能获得响应。之后的其他所有电话都非常快。有没有人知道这方面的方法?

我正在运行WPF 4.0应用程序

码:

var client = new RestClient(apiAddress);
var request = new RestRequest(Method.GET);

IRestResponse response = client.Execute(request);

9605
2017-09-04 08:55


起源

这通常是一些防火墙或其他网络问题。不是你的代码。 - Henk Holterman
首先从新客户端打电话,还是先打电话给新服务器? - Jon Skeet
也许是DNS问题。仅尝试使用IP。 - BlueM
IIS中的应用程序池未启动 - jgauffin
我建议可能是服务启动,或从休息状态恢复。 - podiluska


答案:


最有可能是导致此问题的网络设置。我最近有同样的问题,结果发现在使用时 HttpWebRequest 或RestSharp它正在尝试一些自动配置来寻找代理服务器。

在Internet Explorer中打开网络设置并禁用本地网络的自动配置。在我的例子中,这也解决了RestSharp中第一个请求的延迟。


13
2017-09-17 14:23



这确实解决了Servy的问题。我已将此标记为正确,但它对我没有任何用处,因为我正在开发一个商业应用程序,它将被安装在多台计算机上,我无法强制用户禁用此选项。谢谢你的澄清。 - Neil Hobson
@NeilHobson你找到了解决方法吗? - Sergey
你也可以这样做: stackoverflow.com/questions/2519655/... - christo8989


试图摆脱自动配置寻找代理服务器与此

System.Net.WebRequest.DefaultWebProxy = null;

2
2018-06-03 13:49





我试过@skrause的答案,但这对我不起作用。 我花了很多时间,最后我解决了它。这让我闷闷不乐。

public class SimpleWebProxy : IWebProxy
{
    public ICredentials Credentials { get; set; }

    public Uri GetProxy(Uri destination)
    {
        return destination;
    }

    public bool IsBypassed(Uri host)
    {
        // if return true, service will be very slow.
        return false;
    }

    private static SimpleWebProxy defaultProxy = new SimpleWebProxy();
    public static SimpleWebProxy Default
    {
        get
        {
            return defaultProxy;
        }
    }
}

var client = new RestClient();
client.Proxy = SimpleWebProxy.Default;

1
2017-12-08 14:08





如果在connectiontrings之后在app.config中使用winforms等:

<system.net>
  <defaultProxy enabled="true">
    <proxy usesystemdefault="True"/>
  </defaultProxy>
</system.net>

0
2018-01-22 11:21



嗨,我使用了这个代码配置,它现在工作“从不工作” - Osama khodrog
@Osamakhodrog它有用吗?什么意味着“从不工作”? - hiFI
它对我有用,我认为关键声明是“winforms”,虽然在我的情况下它是一个控制台应用程序。对于Web服务器来说可能不一样。 - Jay13
对于一个网站,它是相同的,但app.config称为web.config - magallanes