json HttpClient请求给出HttpRequestException

n53p2ov0  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(184)

我为我的Web应用程序开发了一个健康检查端点。它打印以下JSON:

{
  "Status": "Healthy",
  "HealthChecks": [
  {
    "Status": "Healthy",
    "Component": "Persistence Server gRPC Status Health Check",
    "Description": "Persistence Server gRPC status is healthy"
  }]
}

这是健康模型类:

internal class HealthModel
{
    public string Status { get; set; } = string.Empty;
    public List<HealthCheck> HealthChecks { get; set; } = new List<HealthCheck>();
}

这是HealthCheck类:

internal class HealthCheck
{
    public string Status { get; set; } = string.Empty;
    public string Component { get; set; } = string.Empty;
    public string Description { get; set; } = string.Empty;
}

我有两个健康检查端点,它们使用完全相同的模型(HealthModel)。这两个端点运行在两个不同的端口上。

  • 应用1:https://localhost:7001/h-persistence
  • 应用2:https://localhost:7101/h-other-persistence

我用WPF创建了一个非常简单的工具来访问这些JSON端点并使用它们。
这是工具代码:

HttpClient httpClient = new HttpClient();
HealthModel? model = await httpClient.GetFromJsonAsync<HealthModel>(url);
return model;

问题是我的工具可以连接到https://localhost:7001/h-persistence并消耗和打印json内容。然而,我得到HttpRequestException(System.IO.IOException:响应提前结束。)当我尝试连接第二个应用程序时。
我比较了我如何初始化两个应用程序,它们是相同的。我使用相同的HealthCheck模型类来读取它们的内容,但我可以成功读取应用程序一的内容,但应用程序二抛出了上面的异常。
我已经搜索了错误,并查看了Stackoverflow上现有问题的解决方案,但尚未成功。

以下是我到目前为止尝试的:

  • 我在Postman中输入了URL。收到错误。
  • 我输入了另一个json端点URL到我的HttpClient。我的HttpClient工作正常。
  • 我在另一台计算机上安装了应用程序。我在Windows防火墙中定义了一个规则,允许我的应用程序发送和接收数据包。我得到了相同的错误。
  • 我尝试了另一个端口号。我得到了同样的错误。
  • 我检查了是否有其他设备正在使用我使用的端口。我没有发现任何问题。
  • 如果我用互联网浏览器访问URL,我可以很好地看到JSON的内容。

Postman 错误:

Error: read ECONNRESET
Request Headers
User-Agent: PostmanRuntime/7.31.1
Accept: */*
Postman-Token: c9da74a8-73f1-451f-b145-708dc98d5b72
Host: localhost:7041
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

下面是我得到的错误:

mlmc2os5

mlmc2os51#

您显示的信息表明服务器上发生了错误,而不是客户端。
检查1)IIS日志,看它是否列出错误代码,2)NT事件日志(“应用程序”日志)是否有任何未处理的异常,3)是否有任何(服务器端)错误处理和日志?

相关问题