ASP .NET Core https重写似乎不起作用

时间:2017-12-07 18:47:58

标签: asp.net-core asp.net-core-2.0

环境: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上做些什么吗?问候。

1 个答案:

答案 0 :(得分:2)

从您发布的代码段看起来app.UseRewriter(options);Configure()方法中的最后一个。将app.UseMvc();移到方法的最底部,因为管道中的排序顺序非常重要。我怀疑MVC会在实际应用重写规则之前处理您的请求。

此外:

  • 您可能不需要RequireHttpsAttribute - 在没有过滤器的情况下运行您的代码,HTTPS重定向仍然应该发生。
  • 这可能取决于您的要求,但我通常将301(永久)重定向设置为HTTPS。该AddRedirectToHttpsPermanent()
  • 有一个扩展名