ServiceStack 4 C#客户端异步调用挂起

时间:2017-07-25 06:20:59

标签: c# servicestack

我正在使用ServiceStack 4客户端来访问RESTful api端点。我写了两个方法来返回一个对象列表。 synchronize方法按预期返回数据。异步方法挂起就行了:

var response = await client.GetAsync<List<Debtor>>("api/Debtor");

这就是我的方法的定义方式:

    public async Task<List<Debtor>> GetDebtorsAsync()
    {
        var debtors = new List<Debtor>();

        try
        {
            var client = new JsonServiceClient(GlobalSingleton.ServerURI);
            var response = await client.GetAsync<List<Debtor>>("api/Debtor");
            debtors = response;
        }
        catch (Exception ex)
        {
            throw;
        }
        return debtors;
    }

    List<Debtor> IDebtorDal.GetDebtors()
    {
        var debtors = new List<Debtor>();

        try
        {
            var client = new JsonServiceClient(GlobalSingleton.ServerURI);
            var response = client.Get<List<Debtor>>("api/Debtor");
            var r = response.GetResponseStatus();
            debtors = response;
        }
        catch (Exception ex)
        {
            var x = ex.Message;
            throw;
        }
        return debtors;
    }

1 个答案:

答案 0 :(得分:2)

ServiceStack Service Clients只应用于调用ServiceStack Services。您可以使用HTTP Utils来呼叫第三方(即非ServiceStack)服务。

JsonServiceClient使用.NET HttpWebRequest,它对单个域的并发HTTP请求数有默认限制,可以通过以下方式增加:

ServicePointManager.DefaultConnectionLimit = n;

另外,对于异步请求,您可以使用JsonHttpClient而不是基于Microsoft的HttpClient更新,而path2.MoveTo(0, 0); path2.LineTo(0, 140); path2.LineTo(140, 140); path2.LineTo(0, 0); path2.Close(); 没有这些限制。

相关问题