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状态码没有处理好有关
我有一个 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状态码没有处理好有关