web-dev-qa-db-ja.com

ASP.net Core 2.0プレビューのappsettings.jsonでリッスンURLを設定できますか?

現在.net Core 2.0ランタイムで実行するASP.net Core 2.0アプリを作成しています。どちらも現在プレビューバージョンです。ただし、Kestrelでデフォルトのhttp://localhost:5000リスンURL以外を使用する方法を理解できません。

Googleができるほとんどのドキュメントでは、1.0プレビューでもurlsに変更されているように見えるserver.urls設定について説明していますが、どちらも機能しません(デバッグロギングをオンにすると、Kestrelから、リッスンエンドポイントは設定されていません)。

多くのドキュメントではhosting.jsonについても触れており、デフォルトのappsettings.jsonを使用できません。ただし、推奨される新しい構成のロード方法を比較すると、appsettings.jsonをロードすることを除いて、これは新しい WebHost.CreateDefaultBuilder メソッドの動作とほとんど同じです。

現在、appsettings.jsonとIConfigureOptions<T>がどのように関連付けられているかを理解できていません。そのため、私の問題は、何を理解していないことが原因である可能性があります KestrelServerOptionsSetup 実際に。

13
Henry

私はそれでこれを動かしました

public static IWebHost BuildWebHost(string[] args) => 
        WebHost.CreateDefaultBuilder(args)
            .UseConfiguration(new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("hosting.json", optional: true)
                .Build()
            )
            .UseStartup<Startup>()
            .Build();

そして、hosting.json

{ "urls": "http://*:5005;" }
16
Ígor Krug

以前のように機能する

WebHost.CreateDefaultBuilder(args)
    .UseConfiguration( new ConfigurationBuilder().AddCommandLine(args).Build() )
    .UseStartup<Startup>()
    .Build();

その後

dotnet myapp.dll --urls "http://*:5060;"
3
Johann Medina

Appsettings.jsonでリッスンURLを設定するには、「Kestrel」セクションを追加します。

"Kestrel": {
    "EndPoints": {
        "Http": {
            "Url": "http://localhost:5000"
        }
    }
}

リファレンス: https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2

2
John Sivertsen

上記のどれも私にとってはうまくいきませんでした。これは私のために働きました:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
            .UseKestrel(options =>
            {
                options.Listen(System.Net.IPAddress.Loopback, 44306, listenOptions =>
                {
                    listenOptions.UseHttps("mysertificate.pfx", "thecertificatePassword");
                });
            })
        .Build();

(44306を任意のポートに変更します)

そして、これには多くの助けがあるかもしれません StackOverflow答え

1
netfed