RestSharp - 服务不可用 - 达到的最大活动客户端数

时间:2016-01-27 08:15:33

标签: c# restsharp

我正在使用RestSharp与Web服务进行通信。

我使用此代码

public static object GetTagValue(string url, string tagname, out string resp)
{
    object result = null;
    resp = string.Empty;
    string theReq = string.Format("tags/{0}", tagname);
    var client = new RestClient(url);

    var request = new RestRequest(theReq, Method.GET);
    request.RequestFormat = DataFormat.Json;

    IRestResponse response = client.Execute(request);
    resp = response.Content;
    if (!string.IsNullOrWhiteSpace(resp))
    {
        dynamic json = JValue.Parse(resp);
        if (null != json.value)
        {
            result = json.value;
        }
    }
    return result;
}

致电服务器

  

获取http://ame-hp/tags/int32 HTTP / 1.1

     

接受:application / json,application / xml,text / json,text / x-json,   text / javascript,text / xml

     

User-Agent:RestSharp / 105.2.3.0

     

主持人:ame-hp

     

Accept-Encoding:gzip,deflate

服务器对工作电话的响应:

  

HTTP / 1.1 200好

     

服务器:Internet Pack HTTP Server

     

连接:关闭

     

Set-Cookie:SID = f11985564d; Expires = Fri,2017年1月27日07:52:17   GMT;路径= /

     

Content-Type:application / json

     

内容长度:133

     

{ “质量”: “好”, “说明”: “”, “名称”: “INT32”, “值”:0, “数据类型”: “INT32”, “控制器”:[],“初值“:NULL,” 只读“:假}

它正在工作,但在两次通话后,服务以此

回答
{"Code":503,"Message":"Service Unavailable - Maximum number of active clients reached."}

第三次调用服务器

  

获取http://ame-hp/tags/int32 HTTP / 1.1

     

接受:application / json,application / xml,text / json,text / x-json,   text / javascript,text / xml

     

User-Agent:RestSharp / 105.2.3.0

     

主持人:ame-hp

     

Accept-Encoding:gzip,deflate

     

连接:Keep-Alive

服务器对从现在开始直到服务器重启的所有来电的响应

  

HTTP / 1.1 503服务不可用 - 活动客户端的最大数量   达到。

     

服务器:Internet Pack HTTP Server

     

连接:Keep-Alive

     

Content-Type:application / json

     

内容长度:88

     

{“代码”:503,“消息”:“服务不可用 - 最大活动数量   客户到达。“}

所以我假设该服务有两个客户端的限制。 但为什么存在两个活跃的客户?

服务器或RestSharp是否未关闭连接,但是哪个?

我可以在RestSharp中做些什么来关闭连接吗?

1 个答案:

答案 0 :(得分:0)

问题是,正如我所假设的那样,服务器只允许2个客户端。在第一个连接上,会发送一个会话Cookie,这必须用于其余的呼叫。

在RestSharp中,您只需添加一行即可实现此目的

创建客户端之后(顺便说一下,您需要重用所有的调用)。你添加这一行:

client.CookieContainer = new System.Net.CookieContainer();

客户端的初始化将是

client = new RestClient();
client.CookieContainer = new System.Net.CookieContainer();

然后你可以使用

client.BaseUrl = new Uri(url);

设置您要拨打的网址