首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web 2/Delphi中来自ASP的HttpClient SendAsync内核阻塞调用栈

Web 2/Delphi中来自ASP的HttpClient SendAsync内核阻塞调用栈
EN

Stack Overflow用户
提问于 2021-07-02 06:34:24
回答 1查看 371关注 0票数 1

希望我能明白这一点..。

我有两个工作流:

  1. (Test-Success) (c).NET WebAPI REST端点> (d)WebRequest to >(E)另一个.NET WebAPI REST端点> (f)Delphi.NET WebAPI (a)ASP.NET 5核心REST端点> (b)HttpClient.SendAsync > (c)WebAPI REST endpoint> (d)WebRequest to >(E)另一个.NET WebAPI REST端点> (f)Delphi.NET库(调用底层Delphi方法时的块)

Delphi.NET

(2)是目标状态。从(c)开始,与1完全相同。

  • In (2) Fiddler显示,正确的url/头在(c)处传递到.WebAPI REST端点,但在ASP.NET核心调用(b)超时之前,它永远不会返回。

尝试过的事情(并非详尽无遗)

在stack

  • rewriting .NET框架代码中,
  • 添加了ConfigureAwait(false),在代码中使用Delphi.NET
  • Removing异步调用HttpClient调用
  • ,在启动时为最终的endpoint
  • Tried增加和减少超时(在客户机和server)
  • ConsoleApp上简化

)

使用HttpClient的标准代码

代码语言:javascript
复制
        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);
EN

回答 1

Stack Overflow用户

发布于 2021-07-02 06:38:53

也许有一个缺失的斜杠:

代码语言:javascript
复制
    client.BaseAddress = new Uri("http://localhost:xxxxx");
    client.DefaultRequestHeaders.Add("header1", "xxx");


    var uri = $"{client.BaseAddress}v1/CoreEndpoint";

=> http://localhost:xxxxxv1/CoreEndpoint

如果将其更改为:

代码语言:javascript
复制
    var uri = $"{client.BaseAddress}/v1/CoreEndpoint";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68220598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档