在ASP.NET Core 2.1中使用UseHttpsRedirection
中间件时,在IIS中可能无法按预期工作。这是因为IIS会在处理SSL/TLS握手之前拦截请求,因此中间件无法检测到请求的协议是否为HTTP,并重定向到HTTPS。
下面是解决此问题的代码示例:
首先,要确保在Startup.cs
文件中添加以下引用:
using Microsoft.AspNetCore.HttpsPolicy;
然后,在ConfigureServices
方法中进行如下更改:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
options.HttpsPort = 443; // 修改为正确的HTTPS端口
});
// ...
}
接下来,在Configure
方法中添加以下代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
app.UseHttpsRedirection();
// ...
}
请注意,您需要将options.HttpsPort
更改为正确的HTTPS端口号,以便将请求重定向到正确的URL。
以上代码更改将确保UseHttpsRedirection
中间件在IIS中正常工作,并将HTTP请求重定向到HTTPS。但是,请确保在IIS中正确配置了SSL证书,并启用了HTTPS绑定。
希望这可以帮助您解决问题!