5 votes

Impossible de démarrer ASP.NET Core avec HTTPS

J'ai une application WPF, qui lance une application ASP.NET core WEB API.

Lorsque je démarre le projet API WEB en tant que projet de démarrage avec ces configurations, il fonctionne bien pour HTTPS. Mais, lorsque j'essaie de lancer cette application à partir de l'environnement WPF, elle ne fonctionne pas pour HTTPS.

Configurations :

  1. Configuration de l'API Web :

enter image description here

  1. Dans le fichier Startup.cs :
public void ConfigureServices(IServiceCollection services)
        {

                services.AddMvc();

                services.Configure<MvcOptions>(options =>
                {
                    options.Filters.Add(new RequireHttpsAttribute());
                });
        }

La méthode Main ressemble à ceci :

public static void InitHttpServer()
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("https://localhost:44300/")
            //.UseApplicationInsights()
            .Build();

        host.Run();
    }

Quand je vérifie le port en utilisant la commande netstat, il montre :

enter image description here

Le facteur dit :

enter image description here

Ni le débogueur ni la méthode d'action de l'application ne sont touchés.

P.S. : Lorsque je rétablis les modifications pour HTTPS et que j'essaie d'utiliser HTTP, cela fonctionne bien.

La méthode principale pour HTTP a un port différent et aucun des changements de configuration mentionnés ci-dessus.

3voto

Travis Boatman Points 1205

Lorsque vous activez SSL dans les paramètres du serveur web, vous activez SSL pour IIS et non pour votre application. Lorsque vous lancez l'API Web depuis Visual Studio, elle s'exécute derrière IIS en tant que service de proxy inverse. C'est pourquoi vous obtenez SSL uniquement lorsque vous l'exécutez en tant que projet de démarrage. Lorsque vous l'exécutez depuis votre application WPF, l'API s'exécute uniquement sur Kestrel.

Ainsi, pour activer SSL sur Kestrel, vous devez ajouter un certificat et le transmettre lors de la configuration de Kestrel.

var cert = new X509Certificate2("YourCert.pfx", "password");

var host = new WebHostBuilder()
    .UseKestrel(cfg => cfg.UseHttps(cert))
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .UseUrls("https://localhost:44300/")
    //.UseApplicationInsights()
    .Build();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X