【问题标题】:Calling another API within an API gets timeout在 API 中调用另一个 API 会超时
【发布时间】:2020-06-23 11:46:05
【问题描述】:

我有一个非常愚蠢的问题,但我工作的环境迫使我使用这个解决方案。

  1. 我们有一个向 Angular 前端提供数据的 WebAPI。
  2. 我们使用 Azure AD B2C 租户进行身份验证。
  3. 用户登录前端并开始正常接收来自 API 的数据。

但是:用户必须在 Azure AD 中获取有关组的不同数据。所以例如UserA 在 GroupB 中,必须获取 GroupY 中的 UserX 以外的其他数据。

因此,在 api 中,我需要验证用户是否在他们请求的数据的组中。 通常我会使用 Microsoft.Graph 从 API 与 Azure 进行通信。但由于这是一个特殊的网络,我需要使用不同的用户代理通过代理。当我从可执行文件调用我的代码时,这一切正常。 但是当我在 API 中调用相同的方法时,我得到一个超时并且没有来自 Azure 的数据。我用其他 API 测试了相同的例程,没有超时。

我已经检查了请求标头以确认没有混淆信息或任何东西,但一切看起来都应该是这样的。

在为 API 创建请求令牌时,有没有人遇到过类似的问题,或者有关于 User-Agent 的解决方案?

谢谢!

干杯!

【问题讨论】:

  • 我建议在执行从 API 到 Azure 的调用时调试代码。检查是否有任何可以描述您的问题的描述性内容,这可能是响应或其他任何内容。您提到它正在处理一个可执行文件,该 api 是否与您的可执行文件在同一网络上运行?执行网络测试以检查您的 api 服务器是否可以访问 azure。我不是这些技术方面的专家,但这些都是需要根据场景来考虑的事情。
  • 嗨,是的,代码在同一台机器上运行。可执行文件已添加到解决方案中并设置为启动项目。一旦达到 HttpResponseMessage response = await httpClient.PostAsync(url, content);我可以等待 30 秒然后发出咔哒声 -> 超时
  • 您是否尝试在与 azure 通信时在代码上设置断点?先调试一下。
  • 是的。我试过了。在发送请求时,我可以等待 30 秒以接收超时响应。在 Async 中,也有一个空返回。

标签: c# azure webapi


【解决方案1】:

案件已结案。代理拒绝请求并在被 api 调用时导致超时。不要问我为什么。相同的代码和构建在已部署的环境中运行,没有任何问题。谁会想到有一天我会说“但它在我的机器上不起作用......”

干杯!

【讨论】:

    猜你喜欢
    • 2016-05-19
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2018-06-10
    • 2018-03-15
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多