2017-07-20 7 views
11

Z tego co rozumiem, poprawny sposób ustawiania portów nasłuchiwania dla ASP Dotnet Core 2 podgląd 1/2 to utworzenie sekcji Kestrel w appsettings.json w następujący format:Używanie appsettings.json do konfiguracji portu nasłuchiwania Kestrel Dotnet core 2 podgląd 2

"Kestrel": { 
    "EndPoints": { //Could also be Endpoints, it's a bit unclear 
     "Http": { 
     "Address": "127.0.0.1", 
    "Port": 9001 //the port you want Kestrel to run on 
}, 

próbowałem skonfigurować webapp próbki na maszynie Debian, ale kiedy uruchomić aplikację, to pisze, że aplikacja jest wystawianie na porcie 5000, domyślny port ..

Wiem, że plik appsettings.json jest odczytywany, ponieważ po zmianie poziomu rejestrowania na Trace, po uruchomieniu pojawia się więcej informacji, w tym brak punktów końcowych i pp użyje standardowego portu 5000.

Próbowałem przeszukać kod źródłowy aspnet na Github i mogę znaleźć obszar, w którym sekcja Kestrel jest odczytywana z konfiguracji (https://github.com/aspnet/Identity/blob/e38759b8a2de1b7a4a1c19462e40214b43c1cf3b/samples/IdentityOIDCWebApplicationSample/MetaPackage/KestrelServerOptionsSetup.cs), ale jak widać wygląda na przykładowy projekt.

Czego mi brakuje, czy nie jest to standardowy sposób konfigurowania Kestrel w rdzeniu ASP Dotnet 2?

Odpowiedz

3

Wsparcie dla konfiguracji Kestrel poprzez appsettings.json zostało upuszczone na 2,0.

Zobacz this komentarz problem:

pustułka wsparcie plik konfiguracyjny został wycięty z 2.0.0. Wartości konfiguracyjne należy odczytywać ręcznie w kodzie inicjującym.

Aby obejść ten problem, można zrobić coś takiego w Program.cs:

public static IWebHost BuildWebHost(string[] args) => 
WebHost.CreateDefaultBuilder(args) 
.UseStartup <Startup>() 
.UseKestrel(options => { 
    var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); 
    if (env == "DEVELOPMENT") { 
    options.Listen(IPAddress.Loopback, 9001); 
    options.Listen(IPAddress.Loopback, 9002, listenOptions => { 
    listenOptions.UseHttps("certificate.pfx", "password"); 
    }); 
    } 

}) 
.Build(); 
0

Używam Program.cs i plik host.json do konfiguracji Kestrel. Przykład:

var config = new ConfigurationBuilder() 
       .SetBasePath(Directory.GetCurrentDirectory()) 
       .AddJsonFile("hosting.json", optional: true, reloadOnChange: true) 
       .Build(); 

var host = new WebHostBuilder() 
       .UseConfiguration(config) 
       .UseKestrel() 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseStartup<Startup>(); 

hosting.json:

{ 
    "urls": "http://localhost:4444;http://localhost:4445;" 
} 

To exapmle do najnowszej wersji rdzenia dotnet. We wcześniejszych wersjach: hosting.json:

{ 
    "server.urls": "http://localhost:4444;http://localhost:4445;" 
} 
+0

To jego podobny sposób mam skonfigurowane Kestrel w rdzeniu 1.1, a to i możliwe zrobić to w ten sposób , ale czytałem wiele miejsc, że przyszły sposób robienia tego powinien być przez użycie sekcji Kestrel w appsettings.json. https://codingblast.com/asp-net-core-2-preview/ –

+0

Jest również demostrowany w tym filmie https://youtu.be/h9hlN0DOKRM –

+0

Widziałem to wideo i wyglądało to tak prosto. Próbowałem używać tej samej metody i nie mogę jej również uruchomić. Czy ktoś ma na to szczęście? – sshirley

Powiązane problemy