ASP.NET Core 2.1 + Kestrel (как отключить HTTPS)

таким образом, он появляется с появлением ASP.NET ядро 2.1, Kestrel теперь автоматически создает конечную точку HTTPS вдоль стороны HTTP, а шаблоны проектов по умолчанию настроены для перенаправления с HTTP на HTTPS (что достаточно легко отменить).

однако мой вопрос... как я могу полностью отключить HTTPS для своего проекта. Я прочитал документы и играл с различными настройками конфигурации для HTTPS, но ничто из того, что я делаю, не позволяет мне отключить его и просто запустить HTTP проект.

Я сумасшедший или просто что-то пропустил. Я ожидал, что это будет очень легко сделать.

4 ответов


оказывается, правильный способ достичь того, что я хотел сделать, - это специально настроить Kestrel.UseKestrel () и просто укажите один адрес, например:

  WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options => {
      options.Listen(IPAddress.Loopback, 5080); //HTTP port
    })
    .UseStartup<Startup>();

in affect переопределяет настройку по умолчанию и отображает это предупреждение при запуске Kestel:

warn: Microsoft.AspNetCore.Server.Kestrel[0]
  Overriding address(es) 'https://localhost:5001, http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.

Если указан второй адрес, предполагается, что адрес должен быть защищен встроенным сертификатом разработчика, как таковой:

  WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options => {
      options.Listen(IPAddress.Loopback, 5080); //HTTP port
      options.Listen(IPAddress.Loopback, 5443); //HTTPS port
    })
    .UseStartup<Startup>();

вы можете, конечно, конкретно защитите свой SSL-адрес, как описано здесь:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x

что необходимо для производства установок.


Если вы используете Visual Studio 2017 Тогда

  • перейти к свойствам проекта
  • снимите флажок SSL Копировать Url-адрес приложения в (Web/Debugger)
  • перейти к вводу браузера пуск

при запуске.cs, удалите промежуточное ПО

app.UseHttpsRedirection();

в файле Properties/launchSettings.json вашего проекта, посмотрите ключа applicationUrl. Вы найдете что-то вроде:

...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...

удалить https конечная точка, и все готово.

редактировать

как отметил @Xorcist файл launchSettings.json не опубликовано. Таким образом, решение выше будет работать только в среде разработки. Чтобы отключить https и, в общем, настроить URL-адреса, которые вы хотите слушать, как в производстве, так и в разработке, вы также можете одно из следующих:

  • использовать --urls параметры dotnet run, будет иметь тот же эффект, как applicationUrl на launchSettings.json. Например: dotnet run --urls=http://0.0.0.0:5000,https://0.0.0.0:5001. Опять же, удалите тот, который вы не хотите использовать.

  • то же самое может быть достигнуто с ASPNETCORE_URLS переменные среды.

  • как указано в ответе @Konstantin to этот вопрос, в ASP Net Core 2.1 вы также можете настроить конечные точки Kestrel в appsettings.json (кажется, это невозможно сделать в 2.0).
  • наконец, то же самое может быть достигнуто с useUrls метод расширения WebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:5000"). Я предпочитаю другое решение, потому что эти жесткие коды вы конечные точки приложения и не могут быть изменены без перекомпиляции приложения.

все возможные варианты подробно описаны в разделе Microsoft Docs на этом.