Asp.net core 2.1 UseHttpsRedirection не работает в IIS - PullRequest
0 голосов
/ 08 января 2019

Я развернул свое ядро ​​asp.net 2.1 WebApi в IIS 10. (IIS работал как прокси)

Я добавил сертификат SSL в IIS и привязки для небезопасного порта (8081) и защищенного порта (8082).

Но когда я захожу на http://localhost:8081/api/values,, браузер просто возвращает мне 403 Запрещено, не перенаправляйте меня на https://localhost:8082/api/values.

Мой код запуска указан ниже:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
           .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddHttpsRedirection(options=>
        {
            options.HttpsPort = 8082;
        });
    }


    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //app.UseForwardedHeaders();
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseMvc();
    }

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Проблема, которую я обнаружил, заключалась в том, что переход с .net core 2.0 на .net core 2.1 означал, что порт https необходимо было явно указать в файле startup.cs

services.AddHttpsRedirection(options =>
    {
        options.HttpsPort = 443;
    });

Подробнее см. Здесь: https://github.com/aspnet/AspNetCore/issues/3176

0 голосов
/ 08 января 2019

Вы получили этот код состояния, потому что вы выбрали Требовать SSL в настройках SSL.

IIS - SSL Settings

IIS - SSL Settings

Если вы хотите использовать свой код для перенаправления на https, снимите этот флажок.

Но сначала вы должны внимательно прочитать документацию: Принудительно использовать HTTPS в ASP.NET Core

Не используйте RequireHttpsAttribute в веб-API, которые получают конфиденциальные Информация. RequireHttpsAttribute использует HTTP-коды состояния для перенаправления браузеры от HTTP до HTTPS. Клиенты API могут не понимать или подчиняться перенаправляет с HTTP на HTTPS. Такие клиенты могут отправлять информацию более HTTP. Веб-API должны:

  • Не прослушивать HTTP.
  • Закрыть соединение с кодом состояния 400 (неверный запрос) и не обслуживать запрос.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...