【问题标题】:Using only multiple https endpoints with ASP.NET Core (Kestrel) doesn't work仅将多个 https 端点与 ASP.NET Core (Kestrel) 一起使用不起作用
【发布时间】:2023-02-01 20:34:47
【问题描述】:

所以我们遇到了这个非常奇怪的问题,我们想要托管我们的 API 的 URL。

我们目前在 Windows 上使用 ASP.NET Core (.NET7) 和 Kestrel 进行自托管。我们有证书,通常一切都按预期工作。


我们通常使用以下网址:

“http://abc.ourdomain.com” “https://abc.ourdomain.com”

这很好用。


如果我们切换到只使用一个:

“https://abc.ourdomain.com”

它也有效。


但是,如果我们只切换到多个 https URL:

“https://abc.ourdomain.com” “https://def.ourdomain.com”

它们都不起作用!


除非我们还为它们中的任何一个添加 http:

“http://abc.ourdomain.com” “https://abc.ourdomain.com” “https://def.ourdomain.com”

然后他们都工作了!


我们使用的 URL 是通过以下方式设置的:

app.Urls.Add(url)

我们使用:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.ConfigureEndpointDefaults(listenOptions =>
    {      
        listenOptions.UseHttps(/*cert info*/);                    
    });
});

配置红隼。

我们已经尝试打开和关闭 https 重定向。没有不同。

所以基本上,总而言之,我们似乎需要至少一个 http 端点或只需要一个 https 端点。这没有意义。

有人可以解释发生了什么吗?

【问题讨论】:

  • 从 DNS 名称到 IP 地址的映射不会发生在您的应用程序中,它应该发生在您的域名注册商中。 UseUrls 应使用 http://*:80 或 https://*:443。

标签: asp.net-core https kestrel


【解决方案1】:

事实证明,这只是我们遇到的问题的冰山一角。来自使用 OWIN 的 .NET Framework 4.8 并迁移到 .NET7 和 ASP.NET Core。

我不认为这是解决上述问题的方法,我们根本就没有解决它。但是,当有以下期望时:

  • 以上那些
  • 能够在同一个端口(不同的 URL)上托管多个服务器
  • 让它在旧的 Windows 服务器上工作(Kestrel 只在 2022 年为我们工作)
  • 自动使用注册证书

那么 Kestrel 根本不是要走的路。一旦我们切换到 HTTP.sys,一切都像一个魅力。当然,这使我们绑定到 Windows,但无论如何对我们来说都是如此。

关于如何设置它以及 HTTP.sys 提供的 Kestrel 不提供的内容,有一些很好的信息:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?view=aspnetcore-7.0

请注意,我一般不建议使用 HTTP.sys 而不是 Kestrel。但它解决了我们的情况,我希望此信息可以帮助其他人尝试进行相同的升级并被卡住!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多