2017-06-19 130 views
3

我有一个WPF应用程序,它启动一个ASP.NET核心WEB API应用程序。无法使用HTTPS启动ASP.NET Core

当我使用这些配置启动WEB API项目作为启动项目时,它对HTTPS正常工作。 但是,当我尝试从WPF环境启动此应用程序时,它不适用于HTTPS。

配置:

  1. 网页API配置:

enter image description here

  • 在Startup.cs文件:
  • public void ConfigureServices(IServiceCollection services) 
         { 
    
           services.AddMvc(); 
    
           services.Configure<MvcOptions>(options => 
           { 
            options.Filters.Add(new RequireHttpsAttribute()); 
           }); 
         } 
    

    Main方法看起来像这样:

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

    当我使用netstat命令检查端口,它示出了:

    enter image description here

    邮递员说:

    enter image description here

    无论是在应用程序的操作方法调试器正在热播。

    P.S. : 当我恢复HTTPS的更改并尝试使用HTTP时,它工作正常。

    HTTP的主要方法有不同的端口,也没有上面提到的配置更改。

    +2

    为清晰描述投票! – Julian

    +0

    我认为你需要配置哪个证书应该使用的地方。 – Julian

    +0

    当我将Web API应用程序作为启动项目运行时,它工作正常,并且不需要证书。 从一些WPF应用程序内部启动时是否需要一个? – XYZ

    回答

    2

    当您在Web服务器设置中启用SSL时,将为您的应用程序启用SSL启用SSL。当您从Visual Studio启动Web API时,它会将IIS作为反向代理服务运行。这就是为什么只有在将其作为启动项目运行时才能获得SSL。当您从WPF应用程序运行它时,该API仅在Kestrel上运行。

    因此,要启用Kestrel上的SSL,您需要添加一个证书,然后在设置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(); 
    
    +0

    花了我一些时间来生成.pfx并在邮递员的浏览器上进行配置。但是马上工作! 谢谢! 有没有办法使用IIS,如果我想,使用此设置 (从WPF内部)? – XYZ

    +0

    是的,你可以。您需要从WPF应用程序启动IIS并将其配置为侦听端口44300(或分配给它的任何内容)并启用SSL。如何,这是超出我的知识。祝你好运。 –