0

We have web apps (ASP.Net Core hosted by IIS) running on the customers' Computers (behind a NAT).

Cell phones or any other devices connected to the Internet should get access to the Web app.

Restrictions:

  • No public ip address.
  • We do not want to configure Dynamic DNS for the customers because hardware and software for internet access is not provided by us.

We want something like an http relay server to forward client requests to the according web apps and vice versa.

e.g.

  • www.example.org/c1 goes to the web app on the PC of Customer 1
  • www.example.org/c2 goes to the web app on the PC of Customer 2

or even better

  • c1.example.org/ goes to the web app on the PC of Customer 1
  • c2.example.org/ goes to the web app on the PC of Customer 2

What I evaluated so far:

Microsoft Azure Hybrid Connection:

  • I am still struggling to perform a login on the web app - The browser does not get the authentication cookie although other cookies seem to work fine.
  • The price tag is quite high and is difficult for us to bill the customers who are farmers and always urge to pay the least possible amount of money for anything.

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

  • I could not get the RelayServer plugin to work yet.
    • Here is the error trace I get:
    \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 is up and running and I was playing around successfully implementing a couple of tutorials.

Questions:

Suggestions would be most appreciated for good and easy to setup alternatives which are free or not too expensive.

If anybody has experiences with ThinkTekture RelayServer you are welcome to share your thoughts as well.

markus s
  • 1,024
  • 1
  • 11
  • 20

1 Answers1

0

There is a way to achieve this using Premium Functions along with its VNET Integration feature.

But this would require a link between the VNET on Azure and your on-premises network with something like a Site-to-Site (S2S) VPN or ExpressRoute which both come with a cost especially if there isn't one yet.

If this is acceptable, Premium Functions are indeed a way to approach this. There is an official tutorial that covers this. For reference, the steps to get this up an running are

  1. Create a Premium Function App
  2. Connection Function App to the virtual network (which already has a S2S or Express Route setup)
  3. Create a Function Proxy to access your internal web app
PramodValavala
  • 6,026
  • 1
  • 11
  • 30