我为我的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
下面是我得到的错误:
1条答案
按热度按时间mlmc2os51#
您显示的信息表明服务器上发生了错误,而不是客户端。
检查1)IIS日志,看它是否列出错误代码,2)NT事件日志(“应用程序”日志)是否有任何未处理的异常,3)是否有任何(服务器端)错误处理和日志?