[解決済み] kestrel Web サーバーが localhost 以外のリクエストを聞くようにするにはどうすればよいですか?
質問
私は、c#、asp.net 5、mvc 6 のアプリケーションを Windows 2008 サーバーにデプロイしました。 私は
dnx web
を起動し、ポート 5000 をリッスンして、ローカル コンピュータからアクセスするときに正常に動作しています。
ローカルホスト以外のリクエストをリッスンするようにするにはどうしたらよいでしょうか。
追伸:この 質問 はこれの複製ではありません...それは、hosting.iniが実際に.iniフォーマットを持っていたRC1以前のasp.netを参照しています。 現在ではJSONで、実際に何が含まれるべきかについてのドキュメントを見つけることができません。
P.P.S. 本当の解決策は、非アクティブな 答え にあるのですが、大量の注意事項があります。 手順です。
- リンク先の回答に従って、project.json を変更します。
- プロジェクトをサーバーに公開します。
- サーバー上の ...\approotYourProject フォルダーに移動し、そこでコマンドウィンドウを開きます。
-
実行
dnx web
- 失敗する -
実行する
dnu restore
- dnu build` を実行します。
- dnx web` を実行 - これでウェブサーバーは正常に起動するはずです。
追伸:この質問をアップブートしてくれた人たちへ。 それは時代遅れです。 非常にひどく時代遅れです!
それは .NET Core の初期のバージョンに適用されました。 質問と回答は、フレームワークの現在のバージョン (例: 2.x, 3.x) には確実に適用されません。
どのように解決するのですか?
Kestrel サーバが使用するデフォルトの設定ファイルは
hosting.json
. この名前は、異なるベータ版で何度も変更されました。もし、今
project.json
を次のように使用すると
"command"
セクション
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
で、コマンドラインからサーバを起動する際に
dnx web
ファイル
hosting.json
が読み込まれます。ファイルの
{
"server.urls": "http://0.0.0.0:5000"
}
は、すべての IP4 アドレスで 5000 リクエストするように設定します。この設定は
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
は、IP4とIP6の両方のアドレスで5000をリッスンするように通知します。
別の設定ファイルを指定するには
ASPNET_ENV
環境変数、あるいは
--config myconfig1.json
(または
config=myconfig1.json
). 例えば、以下のように使用できます。
SET ASPNET_ENV=Development
を作成し
hosting.Development.json
ファイルを特定の設定で作成します。別の方法として
project.json
で
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
でサーバを起動し
dnx webProd
さらに、追加でリスニングと登録ができるようにする必要があることを思い出してください。
dnx web
). これは、ファイアウォールや、新しいTCP/HTTPポートをリッスンするローカルなセキュリティのために必要です。以下のようなものは、すべての人(IPv4とIPv6)のために5000ポートのローカル登録とリスニングを行う必要があります。
netsh http add iplisten ipaddress=0.0.0.0:5000
netsh http add iplisten ipaddress=::5000
netsh http add urlacl url=http://+:5000/ user=\Everyone
より安全性を高めるために、上記の設定を調整して最小限の権限を付与することができます。
UPDATEしました。
BlaneBundersonさん、ありがとうございます。IP アドレスの代わりに * を使うことができます (たとえば
http://*:5000
のように) を使って
のいずれかを指定します。
IP4 と IP6 のアドレスでリッスンします。これらを使用しないように注意する必要があります。
-
http://*:5000;http://::5000
-
http://::5000;http://*:5000
-
http://*:5000;http://0.0.0.0:5000
-
http://*:5000;http://0.0.0.0:5000
IP6アドレスの登録が必要なため
::
またはIP4アドレス
0.0.0.0
2回
.
に対応する 発表
<ブロッククオート技術的には、"localhost" または有効な IPv4 または IPv6 アドレスでないホスト名はすべて、Kestrel がすべてのネットワーク インターフェイスにバインドする原因となります。 IPv6 アドレスでないホスト名は、Kestrel がすべてのネットワーク インターフェースにバインドする原因となります。
この動作は、将来的に変更される可能性があると思います。そのため、私は
*:5000
,
0.0.0.0:5000
と
::5000
というフォームで、任意のITアドレスの登録が可能です。
UPDATED 2:
ASP.NET Core RC2 の変更点 (
アナウンスメント
を参照)、デフォルトをロードする動作が変更されました。を変更する必要があります。
Main
から設定を読み込むために
hosting.json
とコマンドラインパラメータで設定します。以下は使用例です。
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseUrls("http://*:1000", "https://*:1234", "http://0.0.0.0:5000")
.UseEnvironment("Development")
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
上記のコードでは、3つのバインディングを使用しています。
"http://*:1000"
,
"https://*:1234"
,
"http://0.0.0.0:5000"
はデフォルトのポート5000を使用する代わりに、デフォルトで(正確には
http://localhost:5000
). の呼び出しは
.UseConfiguration(config)
が作られる
の後に
.UseUrls
. このように
hosting.json
やコマンドラインから読み込まれた設定は、 デフォルトのオプションを上書きします。もし
.SetBasePath(Directory.GetCurrentDirectory())
行を削除すると
hosting.json
はアプリケーション dll がコンパイルされるのと同じディレクトリからロードされます (例えば
bin\Debug\netcoreapp1.0
).
のような実行を使うことができます。
dotnet.exe run --server.urls=http://0.0.0.0:5000
で、デフォルトの設定を上書きします(
UseUrls
からの設定) と
"server.urls"
プロパティの
hosting.json
が存在すれば
同じように、環境変数に設定することでULRの設定を上書きすることができます。
set ASPNETCORE_SERVER.URLS=http://localhost:12541/
を使用すると、アプリケーションのデフォルトの開始を
dotnet.exe run
を使用することになります。
http://localhost:12541/
を使用します。
を見つけることができます。 はこちら は、HTTPSバインディングの使用例です。
REMARK
環境変数の名前が
ASPNETCORE_SERVER.URLS
から
ASPNETCORE_URLS
は、ASP.NETの後のバージョンでは(
ここで
ASP.NET Core 3.1 のドキュメントを参照してください)。
関連
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] 2つのリストを結合する
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み] foreachループの現在の反復処理のインデックスを取得するにはどうすればよいですか?
-
[解決済み] dnxで依存性の欠如(または他のローダーの障害)を診断するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】ASP.NET Coreアプリケーションがホストされているポートを指定する方法は?