连接到本地主机上的服务时,ASP.NET Core应用程序上的HttpClient超时

时间:2018-08-02 23:09:50

标签: asp.net .net .net-core xml-rpc.net

我有一个XML-RPC服务器(使用XML-RPC.net)作为.NET控制台应用程序运行。我试图通过我的ASP.NET Core(2.1.1)Web应用程序连接到它,但是客户端一直在超时。邮递员也会立即返回没有问题的回复。

这是我的称呼方式:

        HttpClient client = _clientFactory.CreateClient();

        client.Timeout = TimeSpan.FromSeconds(10);

        var httpRequest = new HttpRequestMessage(HttpMethod.Post, instance.ServiceUrl);
        var stringContent = new ByteArrayContent(Encoding.UTF8.GetBytes(request.ToString()));

        httpRequest.Content = stringContent;
        httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");

        var httpResponse = await client.SendAsync(httpRequest);
        var response = await httpResponse.Content.ReadAsByteArrayAsync();

随着控制台应用返回响应,我可以看到请求已成功完成。提琴手显示有200响应,但await client.SendAsync(httpRequest);超时!

请求通常在10毫秒内完成,因此超时值仅用于调试,如果我将其保留,则将花费60秒。响应返回XML。

我尝试将其重写为使用StringContent和使用PostAsync,这是同样的问题。我也尝试使用WebClient重写它,但是返回The remote server returned an error: (100) Continue.不确定是否相关。

曾经为此而苦恼,有人知道会发生什么吗?

1 个答案:

答案 0 :(得分:0)

好吧,我做了一些谷歌搜索,看起来我需要这一行:

client.DefaultRequestHeaders.ExpectContinue = true;

这肯定与100个状态代码返回不正确有关。

在这里找到它: https://social.msdn.microsoft.com/Forums/en-US/042016f0-d70e-42f9-9924-5febeb2bea86/excluding-the-quotexpect-100continuequot-header-from-httpwebrequest-posts?forum=winappswithcsharp