シンプルなAsp.Net Core WebAPI 2.0アプリケーションを作成しました。これは私のローカルマシンで動作します。しかし、私はそれをサーバーにデプロイしたいと思います。だから、私はそれをします。
私のシステム:
Ubuntu 16.04.
Asp.Net WebAPI 2.0 (and dotnet version 2.1.105)
しかし、アプリを起動すると次のように書きます:
Now listening on:http://localhost:53115
それから値を取得しようとすると:
http://id_address:53115/api/values
そして、私は応答を得ることができません。郵便配達で:
Could not get any response
There was an error connecting to
http://id_address:53115/api/values.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General
私は何をすべきですか?それを修正する方法を教えていただけますか?
どこから探したらいいのかわかりません。
ありがとうございました!
私は.NETCore 2.1 prevを使用しているので、自分でテストすることはできませんでしたが、それを信じている場合は https://www.billbogaiv.com/posts/setting-aspnet-Host-address-in -net-core-2 、.UseUrls(urls: "http://*:5000")
を追加すると、Kestrelはlocalhostだけでなくポート5000をリッスンするように指示される可能性があるため、リモートサーバーでも機能するはずです。
その他の可能な解決策、UseKestrel(..)
https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2xLoopback
の代わりにIPAddress.Any
を使用します。
これは Server urls ホスト構成によって構成されます
サーバーがリクエストをリッスンする必要があるポートとプロトコルのIPアドレスまたはホストアドレスを示します。
Key:URL
タイプ:文字列
デフォルト: http:// localhost:50
Set using:UseUrls
環境変数:ASPNETCORE_URLSサーバーが応答する必要があるURLプレフィックスのセミコロン区切り(;)リストに設定します。
コマンドライン引数を使用してURLを設定することも可能です。例えば:
dotnet run --urls = http://0.0.0.0:5001
ただし、ASP.NET Coreの古いバージョンの場合、これはそのままでは機能しません( この修正が使用されたバージョンに適用されたかどうかによって異なります ).
.UseConfiguration
メソッドを介して常にホスト設定を直接設定できるという事実に基づいた、古いバージョンの回避策:
var config = new ConfigurationBuilder().AddCommandLine(args).Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
同じ考え方を使用して、たとえば 構成ファイル などの他の構成ソースから設定値を読み取ることができます。