Azure到HTTP服务的混合连接

Azure到HTTP服务的混合连接,azure,azure-web-app-service,Azure,Azure Web App Service,我已成功创建混合连接ServerA并将其链接到我的Azure Web应用程序。状态已成功连接:已定义ServerB:1010 在我的本地机器ServerA上,我可以连接到正在ServerB:1010上运行的HTTP服务,但由于其他限制,我无法在ServerB上安装混合连接管理器 如果我使用WebClient.UploadData'ServerB:1010',我的Azure Web应用程序中的数据[],我会收到以下错误 无法连接到远程服务器-->System.Net.Sockets.SocketE

我已成功创建混合连接ServerA并将其链接到我的Azure Web应用程序。状态已成功连接:已定义ServerB:1010

在我的本地机器ServerA上,我可以连接到正在ServerB:1010上运行的HTTP服务,但由于其他限制,我无法在ServerB上安装混合连接管理器

如果我使用WebClient.UploadData'ServerB:1010',我的Azure Web应用程序中的数据[],我会收到以下错误

无法连接到远程服务器-->System.Net.Sockets.SocketException:试图以访问权限所禁止的方式访问套接字

如果我连接到数据库服务器MySql或Oracle,也可以从该服务器访问,我没有任何问题

我已成功创建混合连接ServerA并将其链接到我的Azure Web应用程序

将其删除,改为向服务器B添加混合连接。在服务器A上安装混合连接管理器。HCM将充当反向代理

混合连接不关心哪个服务器安装了HCM,只要该服务器可以达到您在New>Hybrid Connection Portal blade中指定的DNS名称

WebClient.UploadData'ServerB:1010'的流量示例,数据[]:

更正:TCping测试非常误导,因为您是在握手混合连接的Azure端,而不是on-prem应用程序的TCP端点。这可能会很高兴地回复你,即使在线的东西没有连接。我的意思是:

始终在应用层进行测试,例如使用curl.exehttp://webservice.corp.local 从

您必须使用名称而不是IP地址。使用完整FQDN在门户设置和代码中引用ServerA和ServerB。混合连接的工作原理是在操作系统级别拦截DNS调用,并将其解析为magic 127.0.0.x,然后通过混合连接路由到on-prem

TL;DR版本: 而不是

10.10.10.2:1010
使用

在门户设置中以及在代码中引用on-prem主机时

如果使用IP地址而不是名称,会发生以下情况:

在Kudu的调试控制台中:

D:\home>nameresolver 192.168.0.4
Server: Default

Non-authoritative answer:
Name: 192.168.0.4
Addresses:  127.0.0.3


D:\home>tcpping 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Complete: 0/4 successfull attempts (0%). Average success time: 0ms


D:\home>curl -s 192.168.0.4
This is iisstart.htm from IIS 8.5 on Windows Server 2012 R2, on-prem.
因此,根据您所调用的API,将192.168.0.4作为FQDN和IP地址的API可以工作

我已成功创建混合连接ServerA并将其链接到我的Azure Web应用程序

将其删除,改为向服务器B添加混合连接。在服务器A上安装混合连接管理器。HCM将充当反向代理

混合连接不关心哪个服务器安装了HCM,只要该服务器可以达到您在New>Hybrid Connection Portal blade中指定的DNS名称

WebClient.UploadData'ServerB:1010'的流量示例,数据[]:

更正:TCping测试非常误导,因为您是在握手混合连接的Azure端,而不是on-prem应用程序的TCP端点。这可能会很高兴地回复你,即使在线的东西没有连接。我的意思是:

始终在应用层进行测试,例如使用curl.exehttp://webservice.corp.local 从

您必须使用名称而不是IP地址。使用完整FQDN在门户设置和代码中引用ServerA和ServerB。混合连接的工作原理是在操作系统级别拦截DNS调用,并将其解析为magic 127.0.0.x,然后通过混合连接路由到on-prem

TL;DR版本: 而不是

10.10.10.2:1010
使用

在门户设置中以及在代码中引用on-prem主机时

如果使用IP地址而不是名称,会发生以下情况:

在Kudu的调试控制台中:

D:\home>nameresolver 192.168.0.4
Server: Default

Non-authoritative answer:
Name: 192.168.0.4
Addresses:  127.0.0.3


D:\home>tcpping 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Complete: 0/4 successfull attempts (0%). Average success time: 0ms


D:\home>curl -s 192.168.0.4
This is iisstart.htm from IIS 8.5 on Windows Server 2012 R2, on-prem.

因此,根据您所调用的API,将192.168.0.4作为FQDN和IP地址的API会起作用。

您不能将TCping与混合连接一起使用。它并没有告诉你任何事情。所有这些告诉您的是,您点击了本地套接字,该套接字将捕获指向HC端点的TCP流量。它实际上并没有通过连接

就混合连接使用IPv4地址而言,它可以工作,但有时不会。原因是该功能通过捕获DNS请求来工作。如果您在应用程序代码中使用的客户端库没有对IP地址执行DNS查找,那么它将不会通过混合连接

DNS名称必须从运行混合连接管理器的主机解析为正确的IP地址

转到原始问题,您需要为ServerB端口1010的端点定义一个混合连接。用于ServerB的DNS名称必须从运行HCM的主机解析。您的HCM需要网络访问ServerB端口1010和Azure。您的状态为已连接,这意味着您的web应用程序可以与该端点的混合连接管理器通信。因此,测试运行HCM的主机与des之间的连接
ired主机:端口终结点。如果可以,请使用DNS名称。我希望这能解除您的阻碍。

您不能将TCping与混合连接一起使用。它并没有告诉你任何事情。所有这些告诉您的是,您点击了本地套接字,该套接字将捕获指向HC端点的TCP流量。它实际上并没有通过连接

就混合连接使用IPv4地址而言,它可以工作,但有时不会。原因是该功能通过捕获DNS请求来工作。如果您在应用程序代码中使用的客户端库没有对IP地址执行DNS查找,那么它将不会通过混合连接

DNS名称必须从运行混合连接管理器的主机解析为正确的IP地址


转到原始问题,您需要为ServerB端口1010的端点定义一个混合连接。用于ServerB的DNS名称必须从运行HCM的主机解析。您的HCM需要网络访问ServerB端口1010和Azure。您的状态为已连接,这意味着您的web应用程序可以与该端点的混合连接管理器通信。因此,测试从运行HCM的主机到所需主机的连接:端口端点。如果可以,请使用DNS名称。我希望这能解除您的阻碍。

谢谢您的回复。这就是我所做的,但也许我的解释不是那么清楚。混合连接安装在服务器A上。我可以在服务器A上运行telnet ServerB 1010,现在正在运行。当应用程序在服务器A上运行时,我可以毫无问题地使用连接字符串ServerB 1010。Thx关于kudu的提示有帮助,但我也得到了同样的消息连接尝试失败:尝试以访问权限所禁止的方式访问套接字SererB:1010 nameresolver.exe ServerB在kudu中为您提供了什么?它应该解析为127.0.0.x,并在ServerA上获得HybridConnection | fl应该说是Online.Im在Hybrid Connection设置中使用IP地址。ServerB10.10.10.2:1010是更好地解释它的同义词。这就是你的问题。您必须使用名称而不是IP地址。使用完整的内部FQDN在门户设置和代码中引用服务器A和B。HC的工作原理是在操作系统级别截获DNS调用,并将其解析为magic 127.0.0.3,然后通过HC.Thx路由以获得回复。这就是我所做的,但也许我的解释不是那么清楚。混合连接安装在服务器A上。我可以在服务器A上运行telnet ServerB 1010,现在正在运行。当应用程序在服务器A上运行时,我可以毫无问题地使用连接字符串ServerB 1010。Thx关于kudu的提示有帮助,但我也得到了同样的消息连接尝试失败:尝试以访问权限所禁止的方式访问套接字SererB:1010 nameresolver.exe ServerB在kudu中为您提供了什么?它应该解析为127.0.0.x,并在ServerA上获得HybridConnection | fl应该说是Online.Im在Hybrid Connection设置中使用IP地址。ServerB10.10.10.2:1010是更好地解释它的同义词。这就是你的问题。您必须使用名称而不是IP地址。使用完整的内部FQDN在门户设置和代码中引用服务器A和B。HC的工作原理是拦截操作系统级别的DNS调用,并将其解析为magic 127.0.0.3,然后通过HC路由。谢谢Christina!关于tcping和HC,您提出了一个非常重要的观点,我不知道这种行为。TCP握手始终有效,因为Biztalk中的Web App->HC端点始终处于连接状态,因此无论Biztalk->on prem通道正在执行什么操作,它都将握手TCP。这句话对吗?@ChristinaCompy如果我试图向443端口上的on-prem API发出请求怎么办?在我的HC配置中,我在端口443上定义了一个类似于“server.fqdn.org”的端点。我的应用程序要求所有curl请求都通过https进行。HC知道这将是一个https请求吗?谢谢Christina!关于tcping和HC,您提出了一个非常重要的观点,我不知道这种行为。TCP握手始终有效,因为Biztalk中的Web App->HC端点始终处于连接状态,因此无论Biztalk->on prem通道正在执行什么操作,它都将握手TCP。这句话对吗?@ChristinaCompy如果我试图向443端口上的on-prem API发出请求怎么办?在我的HC配置中,我在端口443上定义了一个类似于“server.fqdn.org”的端点。我的应用程序要求所有curl请求都通过https进行。HC是否知道这将是一个https请求?
D:\home>nameresolver 192.168.0.4
Server: Default

Non-authoritative answer:
Name: 192.168.0.4
Addresses:  127.0.0.3


D:\home>tcpping 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Connection attempt failed: An attempt was made to access a socket in a way forbidden by its access permissions 192.168.0.4:80
Complete: 0/4 successfull attempts (0%). Average success time: 0ms


D:\home>curl -s 192.168.0.4
This is iisstart.htm from IIS 8.5 on Windows Server 2012 R2, on-prem.