私は問題なくASP.NET4.Xでngrokを使用しています。
残念ながら、ASP.NET Core 2でアプリのビルドを転送しようとすると、解決できない問題が発生します。
次のコマンドの組み合わせを試して、ngrokを起動しました。
ngrok http 44374-Host-header = "localhost:44374"
ngrok http -Host-header = rewrite localhost:44374
ngrok http 44374
すべて同じ結果になります。 Ngrokトンネルが開始しますが、指定された転送URLを開こうとすると、サイトが数分ロードされ、502 BadGatewayエラーが表示されます。 httpバージョンとhttpsバージョンの両方に適用されます。
管理者としてVisualStudioまたはngrokを実行しても役に立ちません。
私は自分の問題を解決しました。
properties/launchSettings.jsonコンテンツ:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:59889/",
"sslPort": 44374
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "https://localhost:44374/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"NgrokTEST": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:59890/"
}
}
}
したがって、ASP.NET CoreはSLL接続に異なるポートを使用し、デフォルトで使用されていることがわかります。
Ngrokでポートを通常(私の場合は59890)に変更すると、問題が解決しました。
誰かがDockerを使用してhttps経由でASP Core 2.Xアプリを実行している場合に役立つ可能性がある次の修正を公開したいのですが、次のことがうまくいきました:
ngrok http https://localhost:[PORT] --Host-header="localhost:[PORT]" --subdomain [YOUR_SUBDOMAIN]
Example:
ngrok http https://localhost:44390 --Host-header="localhost:44390" --subdomain 2gtest
これで、502エラーなしでngrokを実行できました。
右クリックプロジェクトで-> プロパティそして無効にする[〜#〜] ssl [〜#〜]。
Httpポートに転送することで、ngrokをhttpおよびhttpsで動作させることができました。したがって、たとえば、アプリがhttpの場合はポート5000で、httpsの場合は5001で実行される場合は、次のコマンドを実行します。
ngrok http 5000