2017-12-07 3 views
1

Env: ASP.NET Core 2.0. App auf IIS unter Windows Server 2016.ASP.NET Core https Neuschreiben scheint nicht zu funktionieren

In meinem startup.cs eingesetzt wird, habe ich den folgenden Code:

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); 
} 

Wenn jedoch die App zu IIS bereitgestellt wird, sehe ich nicht http://xxx immer geändert zu https://xxx im Browser.

Ich kann direkt zu https://xxx gehen, und das scheint zu funktionieren. Die Idee ist jedoch, HTTP-Anfragen automatisch auf https umzuleiten.

Was fehlt mir? Muss ich auch etwas auf IIS tun? Grüße.

+0

Warum verwenden Sie sowohl die Middleware als auch das Attribut? Du brauchst nur einen. – Tratcher

Antwort

1

Aus dem Code-Snippet, das Sie gepostet haben, sieht app.UseRewriter(options); die letzte in der Configure() Methode aus. Verschieben Sie app.UseMvc(); an den unteren Rand der Methode, da die Sortierreihenfolge in der Pipeline sehr wichtig ist. Ich vermute, MVC verarbeitet Ihre Anfrage, bevor die Rewrite-Regel tatsächlich angewendet wird.

auch:

  • Sie werden vielleicht nicht RequireHttpsAttribute brauchen - führen Sie den Code ohne den Filter, sollte die HTTPS Umleitung noch passieren.
  • Das hängt vielleicht von Ihren Anforderungen ab, aber normalerweise habe ich 301 (permanent) auf HTTPS umgeleitet. Dafür gibt es eine Erweiterung AddRedirectToHttpsPermanent().
+0

Ich denke, das ist auch die Antwort. Middleware in .NET Core fungiert als Pipeline für Anfragen, die bearbeitet werden müssen. Jedes Element in der Pipeline kann eine Antwort generieren, und die MVC-Middleware generiert die Antwort und sendet sie aus. –

Verwandte Themen