Я пытаюсь настроить ASP. NET Core веб-сервер с помощью Kestrel. Я хочу, чтобы Kestrel прослушивал все запросы, исходящие как от https://www.example.com
, так и от https://example.com
, но я не могу понять, как это сделать.
В настоящее время я использую следующий код для настройки Kestrel в начале моей программы:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<AppStartup>();
webBuilder.UseUrls(
"https://example.com:443",
"http://example.com:80",
//"https://www.example.com:443", // This obviously doesn't work with all enabled,
//"http://www.example.com:80", // as it tries to double-bind the ports...
);
// Workaround for HTTP2 bug in .NET Core 3.1 and Windows 8.1 / Server 2012 R2
webBuilder.UseKestrel(options =>
options.ConfigureEndpointDefaults(defaults =>
defaults.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1
)
);
});
Я также пробовал сделать следующее в моем AppStartup
, что я действительно считал решением, отключив этот ресурс.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseRewriter(opt => opt.AddRedirectToWwwPermanent());
...
}
Но, похоже, это не работает. Как правильно это сделать с помощью Kestrel? Некоторые ожидаемые вопросы:
Нет, я не использую Kestrel за IIS и не собираюсь этого делать (не совсем уверен, почему я продолжаю видеть, как люди делают это? Должен ли я это делать? Что я могу получить от это?)
Большое спасибо за чтение!