线程在httpClient.PostAsync中被中止

时间:2017-01-18 12:50:15

标签: c# dotnet-httpclient

当我将请求发布到其余的api时,程序将崩溃并且线程将被中止。 请指教。

    public async Task<TResponse> Post<TRequest, TResponse>(string method, TRequest request)
    {
            JsonMediaTypeFormatter jsonFormat = new JsonMediaTypeFormatter
            {
                SerializerSettings =
                {
                    ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
                    NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore,
                    PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None
                }
            };

            var response = await _httpClient.PostAsync(_baseUrl + method, request, jsonFormat);
            var finalResponse = await response.Content.ReadAsAsync<TResponse>();

            return finalResponse;
    }

请注意,不会向服务器发送任何请求。顺便说一句_httpClient将被定义如下

        _httpClient =
            new HttpClient(new HttpClientHandler
                {
                    AutomaticDecompression =
                        System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate
                })
                {Timeout = TimeSpan.FromSeconds(50)};
        _httpClient.DefaultRequestHeaders.Add("Authorization", "apikey " + apiKey);

2 个答案:

答案 0 :(得分:3)

我自己已经弄明白了,事实证明row_layout.xml会调用一些取消当前线程的方法。所以我删除了PostAsync关键字并获得最终结果。

await

答案 1 :(得分:0)

我们还收到了“线程被中止”错误。

对我们来说,我们对 R 的调用来自单元测试。

一旦我们将单元测试方法签名更改为 httpClient.PostAsync,并将调用更改为 asyncawait 就成功了。

PostAsync