Je crée une application ASP.net Core 2.0 à exécuter sur le runtime .net Core 2.0, les deux actuellement dans leur version Preview. Cependant, je ne vois pas comment Kestrel utiliserait autre chose que l'URL d'écoute par défaut http://localhost:5000
.
La plupart des documents que j'ai pu citer sur Google parlent d'un paramètre server.urls
, qui semble avoir été modifié même dans l'aperçu 1.0 pour être simplement urls
.
Beaucoup de documentation parle aussi d'un hosting.json
et que je ne peux pas utiliser le fichier par défaut appsettings.json. Cependant, si je compare l'approche recommandée consistant à charger une nouvelle configuration, cela ressemble assez à ce que fait la nouvelle méthode WebHost.CreateDefaultBuilder
, sauf qu'elle charge appsettings.json.
Actuellement, je ne comprends pas du tout le lien entre appsettings.json et IConfigureOptions<T>
. Il est donc possible que mon problème provienne d'un manque de compréhension de ce que KestrelServerOptionsSetup
fait réellement.
Je l'ai eu avec ça
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseConfiguration(new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.Build()
)
.UseStartup<Startup>()
.Build();
Et le hosting.json
{ "urls": "http://*:5005;" }
Fonctionne pour moi comme il l'était
WebHost.CreateDefaultBuilder(args)
.UseConfiguration( new ConfigurationBuilder().AddCommandLine(args).Build() )
.UseStartup<Startup>()
.Build();
Ensuite
dotnet myapp.dll --urls "http://*:5060;"
Pour définir les URL d'écoute dans appsettings.json, ajoutez la section "Kestrel":
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
Référence: https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2
Aucun de ce qui précède n'a fonctionné pour moi. Celui-ci a fonctionné pour moi:
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();
(Remplacez le 44306 par un port de votre choix)
Et il pourrait y avoir beaucoup d’aide dans cette réponse StackOverflow