环境:ASP.NET Core 2.0。应用程序将部署到Windows Server 2016上的IIS。
在我的startup.cs中,我有以下代码:
public void ConfigureServices(IServiceCollection services)
...
services.Configure<MvcOptions>(options => {
options.Filters.Add(new RequireHttpsAttribute());
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
...
var options = new RewriteOptions().AddRedirectToHttps();
app.UseRewriter(options);
}
但是,当应用程序部署到IIS时,我在浏览器中看不到http://xxx
已更改为https://xxx
。
我可以直接转到https://xxx
,这似乎有效。但是,我们的想法是自动将http请求重定向到https。
我错过了什么?我还需要在IIS上做些什么吗?问候。
答案 0 :(得分:2)
从您发布的代码段看起来app.UseRewriter(options);
是Configure()
方法中的最后一个。将app.UseMvc();
移到方法的最底部,因为管道中的排序顺序非常重要。我怀疑MVC会在实际应用重写规则之前处理您的请求。
此外:
RequireHttpsAttribute
- 在没有过滤器的情况下运行您的代码,HTTPS重定向仍然应该发生。AddRedirectToHttpsPermanent()
。