为什么 ASP.Net Core Web API 在从代码调用时发送错误,但在从 POSTMAN 调用时却没有发送错误?

问题描述 投票:0回答:1

拥有部署在服务器上的ASP.Net core Web API。当我通过邮递员访问/调用 Web API/端点时,我得到了结果,但通过 .Net 代码(HttpClient)调用时却没有得到结果,而是得到了错误。然而,ASP.Net core Web API 在本地计算机上运行时工作正常。

错误

1 或 4 错误:HttpRequestException:发送请求时发生错误。 2 或 4 错误:WebException:基础连接已关闭:发送时发生意外错误。 3 或 4 错误:IOException:无法从传输连接读取数据:现有 4 或 4 错误:连接被远程主机强制关闭。

为什么部署在服务器上时不起作用,但通过 Postman 或本地运行 API 时起作用?

asp.net asp.net-core asp.net-web-api
1个回答
0
投票

HTTP 客户端配置: 将 .NET Core 应用程序中的 HTTP 客户端配置与您在 Postman 中使用的设置进行比较。标头、超时或代理设置可能存在差异,这些差异可能会影响请求的行为。例如,如果您在 Postman 中使用代理,但未在 .NET Core 应用程序中配置它,这可能会导致连接问题。

TLS/SSL 版本: 确保您的 .NET Core 应用程序支持与 Postman 相同的 TLS/SSL 协议。如果服务器需要特定版本的 TLS,而您的应用程序未配置为使用它,则可能会导致连接问题。您可以通过设置 ServicePointManager.SecurityProtocol 属性来指定 .NET Core 应用程序中的 TLS 版本。

网络环境:如果您的应用程序可以在 Postman 中运行,但不能在您的开发环境中运行,请考虑是否存在影响连接的网络差异。例如,如果您的本地计算机位于公司防火墙或 VPN 后面,而 Postman 请求不受该限制,则这可能会影响连接。

身份验证和授权:验证您从 Postman 发送的任何身份验证或授权标头是否也在 .NET Core 应用程序的请求中正确设置。丢失或不正确的标头可能会导致服务器关闭连接或拒绝处理请求。

错误处理和日志记录:增强 .NET Core 应用程序中的错误处理和日志记录,以捕获有关故障的更多详细信息。这可以帮助确定问题是否发生在连接阶段、发送请求时或接收响应时。记录确切的请求详细信息还可以帮助将您的应用程序发出的请求与 Postman 发出的请求进行比较。

代理问题:如果您的本地环境需要代理才能访问互联网,但 Postman 配置为绕过代理(反之亦然),这可以解释差异。检查 .NET Core 应用程序中的代理设置并确保它们符合环境要求。

使用简化的请求进行测试:尝试简化 .NET Core 应用程序中的请求,以完全匹配 Postman 中的工作方式,包括 URL、标头和正文。这可以帮助确定请求的特定部分是否导致了问题。

© www.soinside.com 2019 - 2024. All rights reserved.