【发布时间】:2021-09-14 03:17:38
【问题描述】:
希望我能明白这一点..
我有 2 个工作流程:
- (测试成功)(c).NET WebAPI REST 端点 > (d)WebRequest 到 > (e)另一个 .NET WebAPI REST 端点 > (f)Delphi.NET 库
- (失败):(a)ASP.NET 5 Core REST 端点 > (b)HttpClient.SendAsync > (c)WebAPI REST 端点> (d)WebRequest 到 > (e)另一个 .NET WebAPI REST 端点 > (f )Delphi.NET 库(调用底层 Delphi 方法时的块)
(2) 是目标状态。从(c)开始,与1)完全相同。
- 在 (2) 中,Fiddler 显示正确的 url/headers 在 (c) 处传递到 .WebAPI REST 端点 - 但在 ASP.NET Core 调用 (b) 超时之前它永远不会返回。
尝试过的事情(并非详尽无遗)
- 在堆栈中添加了 ConfigureAwait(false)
- 重写 .NET Framework 代码以使用 HttpClient
- 在调用 Delphi.NET 的代码中添加异步
- 删除 HttpClient 调用中的异步
- 在 Startup 中为最终端点添加 EnableCors
- 尝试增加和减少超时(在客户端和服务器上)
- ConsoleApp 简化流程
使用 HttpClient 的标准代码
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:xxxxx");
client.DefaultRequestHeaders.Add("header1", "xxx");
var uri = $"{client.BaseAddress}v1/CoreEndpoint";
string jsonContent = JsonConvert.SerializeObject("{body}");
var m = new HttpRequestMessage { RequestUri = new Uri(uri), Method = HttpMethod.Post };
m.Content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.SendAsync(m);
【问题讨论】:
-
请出示完整的(a)(b)。
-
(a) 是一个标准的控制器方法,带有 POST 调用 (b) 如上所述。
标签: c# asp.net-core delphi asp.net-web-api2 delphi.net