无法使用HTTPS启动ASP.NET Core

时间:2017-06-19 18:17:55

标签: asp.net asp.net-core iis-express asp.net-core-webapi

我有一个WPF应用程序,它启动了一个ASP.NET核心WEB API应用程序。

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

配置:

  
      
  1. Web API配置:
  2.   

enter image description here

  
      
  1. 在Startup.cs文件中:
  2.   
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的主要方法有不同的端口,没有上面提到的配置更改。

1 个答案:

答案 0 :(得分:2)

在Web服务器设置中启用SSL时,为IIS启用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();