Il semble donc qu'avec l'avènement d'ASP.NET Core 2.1, Kestrel crée maintenant automatiquement un point de terminaison HTTPS aux côtés de HTTP, et les modèles de projet par défaut sont configurés pour rediriger de HTTP à HTTPS (ce qui est assez facile à annuler).
Cependant, ma question est ... comment puis-je désactiver HTTPS entièrement pour mon projet? J'ai lu la documentation et joué avec divers paramètres de configuration pour HTTPS, mais rien de ce que je fais ne semble me permettre de le désactiver et de simplement exécuter un projet HTTP.
Suis-je fou ou manque juste quelque chose. Je m'attendrais à ce que ce soit super facile à faire.
La bonne façon d’atteindre ce que je voulais faire était de configurer spécifiquement Kestrel avec .UseKestrel () et de spécifier simplement une adresse unique, comme celle-ci:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
})
.UseStartup<Startup>();
in ignorer la configuration par défaut et afficher cet avertissement au démarrage de Kestel:
warn: Microsoft.AspNetCore.Server.Kestrel[0]
Overriding address(es) 'https://localhost:5001, http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.
si une deuxième adresse est spécifiée, elle supposera que l'adresse doit être sécurisée avec le certificat de développeur intégré, en tant que telle:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
options.Listen(IPAddress.Loopback, 5443); //HTTPS port
})
.UseStartup<Startup>();
vous pouvez bien sûr spécifiquement sécuriser votre adresse SSL comme décrit ici:
ce qui est nécessaire pour les configurations de production.
Dans le fichier Startup.cs, supprimez le middleware
app.UseHttpsRedirection();
Si vous utilisez Visual Studio 2017, vous pouvez alors:
Cela mettra à jour les paramètres iisExpress dans le fichier launchSettings.json.
Dans le fichier Properties/launchSettings.json
de votre projet, recherchez la clé applicationUrl
. Vous trouverez quelque chose comme:
...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...
Supprimez le point final https
et le tour est joué.
Modifier
Comme noté par @Xorcist, le fichier launchSettings.json
n'est pas publié. La solution ci-dessus ne fonctionnera donc que dans un environnement de développement. Pour désactiver https et, en général, pour configurer les URL que vous souhaitez écouter, en production et en développement, vous pouvez également effectuer l'une des opérations suivantes:
Utiliser les paramètres --urls
de dotnet run
aura le même effet que applicationUrl
dans launchSettings.json
. Par exemple: dotnet run --urls=http://0.0.0.0:5000,https://0.0.0.0:5001
. Encore une fois, supprimez celui que vous ne voulez pas utiliser.
La même chose peut être obtenue avec la variable d'environnement ASPNETCORE_URLS
.
appsettings.json
(il semble que cela ne puisse pas être fait en 2.0). useUrls
WebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:5000")
. Je préfère l’autre solution, car celle-ci code en tant que points de terminaison d’application et ne peut pas être modifiée sans recompiler l’application.Toutes les options possibles sont expliquées en détail dans Microsoft Docs sur ce .
La CLI dotnet
a maintenant un modèle pour cela.
dotnet new webapi --no-https
Dans Program.cs, ajoutez UseUrls comme suit:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();
Et dans le fichier Startup.cs, supprimez/commentez ce qui suit:
app.UseHttpsRedirection();