我有一个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.
不确定是否相关。
曾经为此而苦恼,有人知道会发生什么吗?
答案 0 :(得分:0)
好吧,我做了一些谷歌搜索,看起来我需要这一行:
client.DefaultRequestHeaders.ExpectContinue = true;
这肯定与100个状态代码返回不正确有关。