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

HttpClient on ASP.NET Core application times out when connecting to service on localhost

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

我是这样称呼它的:

        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();

我可以看到请求已成功发出,因为控制台应用 returns 有响应。 Fiddler 显示有 200 个响应,但 await client.SendAsync(httpRequest); 超时!

请求通常在 10 毫秒内完成,因此超时值仅用于调试,如果我不考虑它,则需要 60 秒。响应 returns XML.

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

被困在这个问题上有一段时间了,有人知道会发生什么吗?

好的,我用谷歌搜索了一下,看起来我需要这一行:

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