XYZ*_*XYZ 5 asp.net iis-express asp.net-core asp.net-core-webapi
我有一个 WPF 应用程序,它启动一个 ASP.NET 核心 WEB API 应用程序。
当我使用这些配置启动 WEB API 项目作为启动项目时,它适用于 HTTPS。但是,当我尝试从 WPF 环境启动此应用程序时,它不适用于 HTTPS。
配置:
- Web API 配置:
- 在 Startup.cs 文件中:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
}
Run Code Online (Sandbox Code Playgroud)
Main 方法如下所示:
public static void InitHttpServer()
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("https://localhost:44300/")
//.UseApplicationInsights()
.Build();
host.Run();
}
Run Code Online (Sandbox Code Playgroud)
当我使用 netstat 命令检查端口时,它显示:
邮递员说:
应用程序中操作方法的调试器都没有被命中。
PS:当我恢复对 HTTPS 的更改并尝试使用 HTTP 时,它工作正常。
HTTP 的主要方法具有不同的端口,并且没有上面提到的配置更改。
当您在 Web 服务器设置中启用 SSL 时,您为 IIS 启用 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();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3218 次 |
最近记录: |