Usare Ngrok con Visual Studio
Tramite ngrock è possibile esporre una URL interna sulla rete pubblica, in questo modo è possibile testare il sito locale da qualsiasi punto in internet e da dispositivi mobili.
verrà mostrata la URL pubblica, simile a questa https://1bb8-18-16-12-137.ngrok.io
, accessibile anche in https.
ma ci si rende subito conto non funziona e si ottiene questo messaggio
Forwarding to local port 443 or a local https:// URL is only available after you sign up.
Sign up at: https://dashboard.ngrok.com/signup
If you have already signed up, make sure your authtoken is installed.
Your authtoken is available on your dashboard: https://dashboard.ngrok.com/get-star...ur-authtoken
ERR_NGROK_340
a questo punto la soluzione è creare un account su ngrock oppure configurare Visual Studio per usare una URL interna che non è in https come ad esempio http://localhost:23819
anche in questo caso però, provando a richiamare la URL pubblica, si ottiene questo messaggio
Bad Request - Invalid Hostname
HTTP Error 400. The request hostname is invalid.
quindi manca ancora un passaggio per esporre i siti in esecuzione da Visual Studio.
ad esempio
Per cambiare questo comportamento è necessario commentare questa riga:
IIS
Ad esempio avendo un sito su IIS che risponde all'indirizzo http://localhost:2222 è possibile esporlo su internet con uno di questi comandiDOS / Batch file
ngrok http 2222
ngrok http http://localhost:2222
ngrok http https://localhost:2222
Text
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 1 hour, 34 minutes
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://1bb8-18-16-12-137.ngrok.io -> http://localhost:59024
Forwarding https://1bb8-18-16-12-137.ngrok.io -> http://localhost:59024
Connections ttl opn rt1 rt5 p50 p90
12 0 0.00 0.00 1.52 429.91
HTTP Requests
-------------
GET / 200 OK
Attenzione, se non si paga un abbonamento, la URL pubblica cambierà ad ogni avvio di ngrok e la sessione ha una durata limitata (Session Expires).
Da notare che il sito risulta accessibile sia in http che in https con certificato valido anche se il sito interno è solo in http (Forwarding).
Visual Studio
Se si sta eseguendo il debug di un sito in Visual Studio questo avrà una URL di questo tipo https://localhost:44334 quindi si potrebbe usare ngrock in questo modoDOS / Batch file
ngrok http https://localhost:44334
Forwarding to local port 443 or a local https:// URL is only available after you sign up.
Sign up at: https://dashboard.ngrok.com/signup
If you have already signed up, make sure your authtoken is installed.
Your authtoken is available on your dashboard: https://dashboard.ngrok.com/get-star...ur-authtoken
ERR_NGROK_340
DOS / Batch file
ngrok http http://localhost:23819
Bad Request - Invalid Hostname
HTTP Error 400. The request hostname is invalid.
Soluzione
Il comando completo è questo che usa il parametro -host-header nella formaDOS / Batch file
ngrok http -host-header="localhost:<port>" <port>
DOS / Batch file
ngrok http -host-header="localhost:23819" 23819
.Net Core
I progetti in .Net Core sono configurati per fare sempre il redirect su https, quindi non si raggiungerà mai il sito in http.Per cambiare questo comportamento è necessario commentare questa riga:
C#
app.UseHttpsRedirection();
Attenzione disabilitare questa riga solo in debug, va assolutamente ripristinarlo in produzione.