Я развернул свое ядро asp.net 2.1 WebApi в IIS 10. (IIS работал как прокси)
Я добавил сертификат SSL в IIS и привязки как для незащищенного порта (8081), так и для безопасного порта (8082).
Но когда я захожу в http: // локальный: 8081 / api / значения, браузер просто возвращает мне 403 Forbidden, а не перенаправляет меня на https: // локальный: 8082 / api / значения.
Мой код запуска выглядит следующим образом:
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();
}





Вы получили этот код статуса, потому что вы выбрали Требовать SSL в Настройках SSL.
Если вы хотите использовать свой код для перенаправления на https, снимите этот флажок.
Но сначала следует внимательно прочитать документацию: Принудительное использование HTTPS в ASP.NET Core
Do not use RequireHttpsAttribute on Web APIs that receive sensitive information. RequireHttpsAttribute uses HTTP status codes to redirect browsers from HTTP to HTTPS. API clients may not understand or obey redirects from HTTP to HTTPS. Such clients may send information over HTTP. Web APIs should either:
- Not listen on HTTP.
- Close the connection with status code 400 (Bad Request) and not serve the request.
Спасибо! 60 минут погони за хвостом.
Проблема, которую я обнаружил, заключалась в том, что изменение с .net core 2.0 на .net core 2.1 означало, что порт https необходимо было явно указать в startup.cs.
services.AddHttpsRedirection(options =>
{
options.HttpsPort = 443;
});
Подробнее см. Здесь: https://github.com/aspnet/AspNetCore/issues/3176
Привет, у меня возникла эта проблема, и я изменил свой порт на 443, но это не решает проблему. У вас есть другая альтернатива?
В моем случае ошибка заключалась в том, что я звонил в неподдерживаемом порядке. Изменив свой код на первый вызов:
app.UserHttpsRedirection()
а потом позвони
app.UseHsts()
это начало работать, а не наоборот.
Это работает, но это странно, потому что документация показывает неправильный порядок.
В моем startup.cs я сделал эти настройки
public void ConfigureServices(IServiceCollection services)
{
try
{
//..other codes
services.AddHttpsRedirection(options =>
{
options.HttpsPort = 443;
});
}
catch (Exception ex)
{
string innerMessage = "";
if (ex.InnerException != null)
innerMessage = ex.InnerException.Message;
Log.Logger.Error("ConfigureServices Message: " + ex.Message + " inner Message:" + innerMessage + "Env.Name:" + _env.EnvironmentName);
}
}
А в методе Configure я использовал вот так
app.UseHttpsRedirection();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
Это было для меня решением.