web-dev-qa-db-fra.com

ASP.NET Core 2.1 + Kestrel (Comment désactiver HTTPS)

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.

31
Xorcist

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:

https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x

ce qui est nécessaire pour les configurations de production.

20
Xorcist

Dans le fichier Startup.cs, supprimez le middleware

app.UseHttpsRedirection();
14
Tairan

Si vous utilisez Visual Studio 2017, vous pouvez alors:

  1. Accédez aux propriétés de votre projet. (Clic droit> Propriétés)
  2. Cliquez sur l'onglet Débogage.
  3. Sous Paramètres du serveur Web, désélectionnez Activer SSL.
  4. Enregistrez, construisez et essayez à nouveau.

Cela mettra à jour les paramètres iisExpress dans le fichier launchSettings.json.

13
Abhishek Kumar

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

  • Comme mentionné dans la réponse de @Konstantin à cette question , dans ASP Net Core 2.1, vous pouvez également configurer les points de terminaison Kestrel dans le appsettings.json (il semble que cela ne puisse pas être fait en 2.0). 
  • Enfin, la même chose peut être obtenue avec la méthode d'extension useUrlsWebHost.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

8
joanlofe

La CLI dotnet a maintenant un modèle pour cela.

dotnet new webapi --no-https
0
Clay

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();
0
BlackBrain