2017-07-20 5 views
11

D'après ce que je comprends la bonne façon de définir les ports d'écoute pour ASP Dotnet Core 2 aperçu 1/2 est en créant une section Kestrel dans le appsettings.json dans le format suivant:Utiliser appsettings.json pour configurer le port d'écoute Kestrel Dotnet core 2 aperçu 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 
}, 

J'ai essayé de mettre en place l'échantillon webapp sur une machine Debian, mais quand je commence l'application, il écrit que l'application est listage sur le port 5000, le port par défaut ..

Je sais que appsettings.json est lu, car lorsque je change le niveau de journalisation en Trace, je reçois plus d'informations au démarrage, y compris l'absence de points de terminaison et le pp utilisera le port 5000 standard.

J'ai essayé de rechercher le code source aspnet sur Github, et je peux trouver une zone où la section Kestrel est lue de la configuration (https://github.com/aspnet/Identity/blob/e38759b8a2de1b7a4a1c19462e40214b43c1cf3b/samples/IdentityOIDCWebApplicationSample/MetaPackage/KestrelServerOptionsSetup.cs), mais comme vous pouvez le voir, il ressemble à un exemple de projet. Qu'est-ce qui me manque, n'est-ce pas la manière standard de configurer Kestrel en ASP Dotnet Core 2?

Répondre

3

Prise en charge de la configuration Kestrel via appsettings.json est tombé à 2,0.

Voir this question commentaire:

Kestrel support de fichier de configuration a été coupé de 2.0.0. Les valeurs de configuration doivent être lues manuellement dans votre code d'initialisation.

Pour contourner ce problème, vous pouvez faire quelque chose comme ça dans 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

J'utilise Program.cs et le fichier hosting.json pour config Kestrel. Exemple:

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;" 
} 

Ceci est exapmle pour la dernière version de base dotnet. Pour les versions antérieures: hosting.json:

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

Ce son de la même façon que je l'ai configuré Kestrel dans le noyau 1.1, et il est i possible de le faire de cette façon , mais j'ai lu plusieurs endroits que la façon future de le faire devrait être en utilisant la section Kestrel dans appsettings.json. https://codingblast.com/asp-net-core-2-preview/ –

+0

Il est également démostré dans cette vidéo https://youtu.be/h9hlN0DOKRM –

+0

J'ai vu cette vidéo et il semblait si simple. Je me suis essayé en utilisant la même méthode et je ne peux pas le faire fonctionner non plus. Quelqu'un d'autre a de la chance avec ça? – sshirley