【发布时间】:2019-01-15 07:11:27
【问题描述】:
我知道这个问题已被多次询问,但找不到与我的场景完全匹配的任何内容。
我有 2 个 Web API,比如 WebAPI1 和 WebAPI2。 WebAPI1 使用 .Netcore 开发并部署在 Azure 中。 WebAPI2 使用 .NET 框架 4.6.1 开发,并使用 IIS 部署在 Azure VM 中。
现在我必须从 WebAPI1 向 WebAPI2 发出请求。我已经使用 httpclient 调用了 WebAPI2。
托管后,尝试发出请求时,抛出以下错误:
无法与服务器建立连接。
我已将 VM 的端口 80 和 443 添加到入站端口规则中。那并没有解决我的问题。我猜这可能是防火墙问题。我可以尝试解决什么问题?
编辑
我的虚拟机的 IP 地址是 10.x.x.x。在 IIS 中,我在默认网站中添加了一个应用程序,名称为:WebAPI2。在 Web API 中,我有控制器方法名称 GetData()。
我有路由前缀:[RoutePrefix("api/App")]。所以我使用的网址是http://10.x.x.x/WebAPI2/api/App/GetData。
【问题讨论】:
-
您的 WebAPI1 是否部署在 Azure Web 应用服务中?
-
@NancyXiong 是的
-
如果是这样,你为什么在你的 URL 中使用私有 IP?当您从 WebAPI1 向 Azure VM 上的 WebAPI2 请求时,它应该是公共 dns 名称或 IP 地址。
-
您可以尝试在 URL 中使用与该 VM 关联的公共 IP 地址或 DNS 名称,例如
xxx.region.cloudapp.azure.com? -
@NancyXiong 如果我们没有该 VM 的公共 IP 地址该怎么办。我们的组织限制我们为任何 Azure VM 创建公共 IP。
标签: c# asp.net-web-api2 azure-virtual-machine azure-web-app-service