0

我们在客户的计算机(在 NAT 后面)上运行 Web 应用程序(由 IIS 托管的 ASP.Net Core)。

连接到 Internet 的手机或任何其他设备应该可以访问 Web 应用程序。

限制:

  • 没有公共IP地址。
  • 我们不想为客户配置动态 DNS,因为我们不提供用于互联网访问的硬件和软件。

我们想要像 http 中继服务器这样的东西来将客户端请求转发到相应的 Web 应用程序,反之亦然。

例如

  • www.example.org/c1 转到客户 1 的 PC 上的 Web 应用程序
  • www.example.org/c2 转到客户 2 的 PC 上的 Web 应用程序

甚至更好

  • c1.example.org/ 转到客户 1 的 PC 上的 Web 应用程序
  • c2.example.org/ 转到客户 2 的 PC 上的 Web 应用程序

到目前为止我评估的内容:

Microsoft Azure 混合连接:

  • 我仍在努力在 Web 应用程序上执行登录 - 尽管其他 cookie 似乎工作正常,但浏览器没有获取身份验证 cookie。
  • 价格标签相当高,我们很难向农民客户收费,并且总是敦促为任何事情支付尽可能少的钱。

RabbitMQ 与 ThinkTecture RelayServer ( https://github.com/thinktecture/relayserver ):

  • 我还不能让 RelayServer 插件工作。
    • 这是我得到的错误跟踪:
    \RelayServer>Thinktecture.Relay.Server.exe start
    [12:27:59 WRN] No SharedSecret or OAuthCertificate is configured. Please configure one of them. Continuing with a random value which will make all tokens invalid on restart.
    [12:27:59 DBG] Using settings file. settings-file-name=C:\Users\schema\AppData\Local\Thinktecure\RelayServer\settings_443.config.json
    [12:27:59 DBG] Loaded setting from file. origin-id=ecf0e337-c111-450a-b802-384df2fbce76
    [12:27:59 INF] Configuration Result:
    [Success] Name TTRelayServer
    [Success] DisplayName Thinktecture RelayServer
    [Success] Description Thinktecture RelayServer Process
    [Success] ServiceName TTRelayServer
    [12:27:59 INF] Topshelf v4.1.0.172, .NET Framework v4.0.30319.42000
    [12:27:59 DBG] Starting TTRelayServer
    [12:28:10 ERR] The service failed to start.
    System.ServiceProcess.TimeoutException: Der Vorgang wurde nicht abgeschlossen, da der Timeout abgelaufen ist.
       bei System.ServiceProcess.ServiceController.WaitForStatus(ServiceControllerStatus desiredStatus, TimeSpan timeout)
       bei Topshelf.Runtime.Windows.WindowsHostEnvironment.StartService(String serviceName, TimeSpan startTimeOut)
       bei Topshelf.Hosts.StartHost.Run()
  • RabbitMQ 已启动并正在运行,我正在尝试成功实现几个教程。

问题:

对于免费或不太昂贵的良好且易于设置的替代方案,建议将不胜感激。

如果有人对 ThinkTekture RelayServer 有经验,也欢迎您分享您的想法。

4

1 回答 1

0

有一种方法可以使用高级功能及其VNET 集成功能来实现此目的。

但这需要在 Azure 上的 VNET 和您的本地网络之间建立一个链接,例如站点到站点 (S2S) VPNExpressRoute,这两者都需要付费,尤其是在还没有的情况下。

如果这是可以接受的,Premium Functions 确实是解决这个问题的一种方法。有一个官方教程涵盖了这一点。作为参考,启动它的步骤是

  1. 创建高级功能应用程序
  2. Connection Function App 到虚拟网络(已经有 S2S 或 Express Route 设置)
  3. 创建函数代理以访问您的内部 Web 应用程序
于 2020-01-30T05:51:25.180 回答