我已成功创建混合连接 (ServerA) 并将其链接到我的 Azure Web 应用程序。
删除它并改为添加到 服务器 B 的混合连接。在服务器 A 上安装混合连接管理器。 HCM 将充当反向代理。
混合连接不关心哪个服务器安装了 HCM,只要该服务器可以访问您在 新建 > 混合连接门户刀片中指定的 DNS 名称。
WebClient.UploadData('ServerB:1010', data[]) 的流量示例:
Web App ---> Hybrid Connection ---> HCM on Server A ---> 1010/TCP on Server B.
<--- <--- <---
有一种更简单的测试方法。打开 Kudu 控制台并执行
tcpping ServerB:1010
更正:tcpping 测试非常具有误导性,因为您正在握手混合连接的 Azure 端,而不是本地应用程序的 TCP 端点。即使本地的东西没有连接,这可能会很高兴地回复你。这就是我的意思:
始终在应用层进行测试(例如,使用来自 Kudu Console 的 curl.exe http://webservice.corp.local)
您必须使用名称而不是 IP 地址。使用完整的 FQDN 在门户设置和代码中引用 ServerA 和 ServerB。混合连接的工作原理是在操作系统级别拦截 DNS 调用并将它们解析到神奇的 127.0.0.x,然后通过混合连接路由到本地。
TL;DR 版本:
代替
10.10.10.2:1010
使用
ServerB.domain.local:1010
在门户设置中以及在您的代码中引用本地主机时。
如果您使用 IP 地址而不是名称,会发生以下情况:
在 Kudu 的 DebugConsole 中:
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),它有点可以工作。