【问题标题】:Why is my Initial call in RestSharp really slow? but others after are very fast为什么我在 RestSharp 中的初始调用真的很慢?但之后的其他人非常快
【发布时间】:2012-09-04 08:55:21
【问题描述】:

我正在使用 RESTSHARP 调用 WEB API,它们工作正常。但是,对 API 的初始调用(不管它是什么调用)有时可能需要长达 10 秒才能获得响应。之后的所有其他呼叫都非常快。有谁知道解决这个问题的方法吗?

我正在运行 WPF 4.0 应用程序

代码:

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

IRestResponse response = client.Execute(request);

【问题讨论】:

  • 这通常是一些防火墙或其他网络问题。不是你的代码。
  • 第一次调用来自新客户端,还是第一次调用新服务器?
  • 可能是 DNS 问题。仅使用 IP 尝试。
  • IIS 中的应用程序池没有启动
  • 我建议它可能是服务开始,或从休息状态恢复。

标签: c# .net wpf restsharp


【解决方案1】:

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

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

【讨论】:

  • 这确实解决了 Servy 的问题。我已将此标记为正确,但它对我没有任何用处,因为我正在开发一个要安装在多台计算机上的商业应用程序,我不能强迫用户禁用此选项。感谢您的澄清。
  • 你也可以这样做:stackoverflow.com/questions/2519655/…
【解决方案2】:

我曾尝试过@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;

【讨论】:

    【解决方案3】:

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

    System.Net.WebRequest.DefaultWebProxy = null;
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 嗨,我使用了这个代码配置,它现在可以“从不工作”
      • @Osamakhodrog 是否有效? “从不工作”是什么意思?
      • 它对我有用,我认为关键语句是“winforms”,尽管在我的情况下它是一个控制台应用程序。 Web 服务器可能不一样。
      • 对于一个网站来说是一样的,但是 app.config 被称为 web.config
      猜你喜欢
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      相关资源
      最近更新 更多