Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#:无法建立与服务器的连接_C#_Asp.net Web Api2_Azure Virtual Machine_Azure Web App Service - Fatal编程技术网

c#:无法建立与服务器的连接

c#:无法建立与服务器的连接,c#,asp.net-web-api2,azure-virtual-machine,azure-web-app-service,C#,Asp.net Web Api2,Azure Virtual Machine,Azure Web App Service,我知道这个问题已经被问了很多次,但找不到与我的场景完全匹配的任何东西 我有两个Web API,比如WebAPI1和WebAPI2。WebAPI1是使用.Netcore开发的,部署在Azure中。WebAPI2是使用.NET framework 4.6.1开发的,并使用IIS部署在Azure VM中 现在我必须从WebAPI1向WebAPI2发出请求。我已经使用httpclient打电话给WebAPI2 托管后,当尝试发出请求时,会抛出以下错误: 无法建立与服务器的连接 我已将端口80和443添加

我知道这个问题已经被问了很多次,但找不到与我的场景完全匹配的任何东西

我有两个Web API,比如WebAPI1和WebAPI2。WebAPI1是使用.Netcore开发的,部署在Azure中。WebAPI2是使用.NET framework 4.6.1开发的,并使用IIS部署在Azure VM中

现在我必须从WebAPI1向WebAPI2发出请求。我已经使用httpclient打电话给WebAPI2

托管后,当尝试发出请求时,会抛出以下错误:

无法建立与服务器的连接

我已将端口80和443添加到VM的入站端口规则中。这并没有解决我的问题。我猜这可能是防火墙的问题。我可以尝试解决什么问题

编辑 我的虚拟机的IP地址类似于10.x.x.x。在IIS中,我在默认网站中添加了一个名为:
WebAPI2
的应用程序。在web API中,我有控制器方法名
GetData()


我有路由前缀:
[RoutePrefix(“api/App”)]
。所以我使用的URL是
http://10.x.x.x/WebAPI2/api/App/GetData

请确保已将域绑定到iis网站(WebAPI2)或者直接使用具有指定端口的虚拟机的IP。

您似乎无法通过URL
Azure web app服务中的WebAPI1访问Azure虚拟机上的WebAPI2http://10.x.x.x/WebAPI2/api/App/GetData
因为公共Azure web app服务在URL中找不到私有IP

在这种情况下,您可以在Azure web App服务中启用。这允许您的web应用访问虚拟网络中的资源,但不授予您从虚拟网络对web应用的私有访问权限。此外,这些网络可以使用VPN技术连接到您的本地网络

此外,如果Azure web app设置了它们的VNET,那么Azure web app沙箱中的一些VNET可能会有所不同

特别是对私人和地方的限制 如果目标网络接口属于 应用程序。无法访问同一台计算机上的其他VNet适配器,以及 所有其他网络限制仍然适用


看到我的虚拟机的IP地址是10.*.*。在IIS中,我在默认网站中添加了一个名为WebAPI2的应用程序。在web API中,我有控制器方法名GetData()。我有路由前缀:[RoutePrefix(“api/App”)]。所以我使用的URL是-->。我在问题中添加了相同的信息,格式更好。我提到的URL在通过邮递员发送请求时会按预期返回数据。为什么要添加“WebAPI2”。我认为当应用程序本身映射到一个IP并且您是否缺少一个“http://”时,不需要它,因为默认网站中添加了一些其他web应用程序。所以我需要提及应用程序名称和IP地址。我在评论中遗漏了http://。但我的URL中确实有,请尝试使用80以外的端口。正如您已经提到的,这似乎是一个防火墙配置问题,如果它适用于其他端口,那么您可能需要为端口80和443配置防火墙。您的WebAPI1是否部署在Azure web app服务中?@Nancyxyong yesIf那么,您为什么在URL中使用私有IP?当您从WebAPI1请求Azure VM上的WebAPI2时,它应该是公共dns名称或IP地址。您可以尝试使用公共IP地址或dns名称,如URL中与该VM关联的
xxx.region.cloudapp.Azure.com
?@NancyXiong如果我们没有该VM的公共IP地址,该怎么办。我们的组织限制我们为任何Azure VM创建公共IP。感谢您的详细解释。我会试试这个,然后再打给你。谢谢!