Sve*_*vek 42 ssl https kestrel-http-server asp.net-core-2.0
我目前正在使用ASP.NET Core 2.x,我曾经能够让Kestrel使用HTTPS/SSL,只需将其放入UseUrls()方法中即可:
var host = new WebHostBuilder()
.UseUrls("http://localhost", "https://111.111.111.111")
.UseKestrel()
.Build();
Run Code Online (Sandbox Code Playgroud)
但现在我得到了例外:
System.InvalidOperationException:
HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
Run Code Online (Sandbox Code Playgroud)
如何配置Kestrel在ASP.NET Core 2.x中使用SSL?
Sve*_*vek 64
如果要将服务器关联以使用分配给服务器/ Web主机的所有IP地址,则可以执行以下操作:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000", "http://*:80")
.UseStartup<Startup>()
.Build();
Run Code Online (Sandbox Code Playgroud)
注意:UseUrls()方法中使用的字符串格式为:http://{ip address}:{port number}.
- 如果使用*(星号)表示IP地址,则表示主机上的所有可用IP地址.
- 端口号不是必需的.如果将其留空,则默认为端口80.
在这里的官方Microsoft Docs上有关于该UseUrls()方法的大量额外细节.
但是,SSL不适用于该
UseUrls()方法 ---因此,这意味着如果您尝试添加以https://程序开头的URL 将抛出异常Run Code Online (Sandbox Code Playgroud)System.InvalidOperationException: HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
HTTPS端点只能使用配置KestrelServerOptions.
以下是使用该Listen方法使用TCP套接字的示例:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5000); // http:localhost:5000
options.Listen(IPAddress.Any, 80); // http:*:80
options.Listen(IPAddress.Loopback, 443, listenOptions =>
{
listenOptions.UseHttps("certificate.pfx", "password");
});
})
.UseStartup<Startup>()
.Build();
Run Code Online (Sandbox Code Playgroud)
注意:如果同时使用Listen方法和端点UseUrls,则Listen端点将覆盖UseUrls端点.
您可以在官方Microsoft Docs中找到有关设置端点的更多信息.
如果使用IIS,则IIS的URL绑定将覆盖您通过调用
Listen或设置的任何绑定UseUrls.有关更多信息,请参见ASP.NET核心模块简介.
| 归档时间: |
|
| 查看次数: |
42582 次 |
| 最近记录: |