当ASP.NET Core 6 Razor页面应用程序主机在IIS或类似的Web服务器上运行时,可能会发生奇怪的重定向问题。这在应用程序中使用了路由模板参数时尤为常见。解决这个问题可以通过在应用程序的Startup.cs文件中添加以下内容来实现:
app.Use(async (context, next) =>
{
if (context.Request.Headers["X-Forwarded-Proto"] == "http")
{
var withHttps = "https://" + context.Request.Host + context.Request.Path;
context.Response.Redirect(withHttps);
}
else
{
await next();
}
});
这段代码将检查是否存在"X-Forwarded-Proto"标题,并将其设置为"HTTPS"。如果在请求消息头中设置了该标题,则会发生这种情况,而主机会将请求重定向到HTTP而不是HTTPS协议。通过应用程序中间件,在消息头中设置X-Forwarded-Proto以跳过重定向,从而解决了这个问题。