为了账号安全,请及时绑定邮箱和手机立即绑定

HttpClient 一段时间后没有响应

HttpClient 一段时间后没有响应

C#
青春有我 2022-06-12 10:22:28
我有一个使用Asp.Net Boilerplate的 Asp.Net Core (2.1) 网站。我正在尝试使用 进行 API 调用HttpClient,该调用在本地工作,但在部署到 IIS 时会引发错误。我创建了一个TypedClientpublic class FormsHttpClient : IFormsHttpClient{    private const string url = "my_url:3001/";    private readonly HttpClient _client;    public FormsHttpClient(HttpClient httpClient)    {        httpClient.BaseAddress = new Uri(url);        _client = httpClient;    }    ....}在我的startup.cs文件中,我添加了:services.AddHttpClient<IFormsHttpClient, FormsHttpClient>();我部署时遇到的错误:ERROR 2018-12-12 18:30:29,509 [11] Mvc.ExceptionHandling.AbpExceptionFilter - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机未能响应系统.Net.Http.HttpRequestException:连接尝试失败,因为连接方一段时间后没有正确响应,或者连接的主机没有响应,建立连接失败---> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port,CancellationToken cancelToken) --- 内部异常堆栈跟踪结束 ---网络调用通常需要 1800 毫秒才能完成,它似乎在 21000 毫秒左右超时。我遇到了代码AppContext.SetSwitch("System.Net.Http.useSocketsHttpHandler", false);,以为我不确定把它放在哪里,我把它扔到了我的startup.cs类的构造函数中,但它似乎没有任何效果。我还缺少什么吗?E:调用api的代码在JS中:   app.forms.token = {    generate: function () {        Formio.logout();        abp.services.app.forms.generateFormToken().done(function (e) {            Formio.setToken(e);        });    },    clear: function () {        Formio.logout();    }}
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

由于我正在与同一台机器但不同的端口进行通信,因此我将服务器代码中的公共 IP 更改为内部 IP,我的问题得到了解决。

我已经将在服务器代码中使用内部 IP 和在客户端代码中使用公共 IP 作为经验法则。如果这是不好的做法,请告诉我。


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信