web-dev-qa-db-de.com

ASP.NET Core 2.1 + Kestrel (Deaktivieren von HTTPS)

Mit dem Aufkommen von ASP.NET Core 2.1 scheint es so, als würde Kestrel nun automatisch einen HTTPS-Endpunkt neben dem HTTP-Endpunkt erstellen, und Standardprojektvorlagen werden so eingerichtet, dass sie von HTTP zu HTTPS umleiten (was leicht rückgängig zu machen ist).

Meine Frage ist jedoch: Wie kann ich HTTPS für mein Projekt vollständig deaktivieren? Ich habe die Dokumente durchgelesen und mit einer Vielzahl von Konfigurationseinstellungen für HTTPS gespielt, aber nichts, was ich mache, scheint mir zu erlauben, es auszuschalten und einfach ein HTTP-Projekt auszuführen.

Bin ich verrückt oder vermisse einfach etwas. Ich würde erwarten, dass dies sehr einfach ist.

31
Xorcist

Der richtige Weg, um das zu erreichen, was ich wollte, bestand darin, Kestrel speziell mit .UseKestrel () zu konfigurieren und einfach eine einzige Adresse anzugeben:

  WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options => {
      options.Listen(IPAddress.Loopback, 5080); //HTTP port
    })
    .UseStartup<Startup>();

auswirkungen auf die Standardeinstellung überschreiben und diese Warnung beim Start von Kestel anzeigen:

warn: Microsoft.AspNetCore.Server.Kestrel[0]
  Overriding address(es) 'https://localhost:5001, http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.

wenn eine zweite Adresse angegeben wird, wird davon ausgegangen, dass die Adresse mit dem integrierten Entwicklerzertifikat als solches gesichert werden soll:

  WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options => {
      options.Listen(IPAddress.Loopback, 5080); //HTTP port
      options.Listen(IPAddress.Loopback, 5443); //HTTPS port
    })
    .UseStartup<Startup>();

sie können Ihre SSL-Adresse natürlich speziell wie hier beschrieben sichern:

https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x

was für Produktionsaufbauten notwendig ist.

20
Xorcist

Entfernen Sie in der Startup.cs die Middleware

app.UseHttpsRedirection();
14
Tairan

Wenn Sie Visual Studio 2017 verwenden, können Sie Folgendes tun:

  1. Gehen Sie zu Ihren Projekteigenschaften. (Rechtsklick> Eigenschaften)
  2. Klicken Sie auf die Registerkarte Debuggen.
  3. Deaktivieren Sie unter Webserver-Einstellungen die Option SSL aktivieren.
  4. Speichern, erstellen und erneut versuchen.

Dadurch werden die iisExpress-Einstellungen in der Datei launchSettings.json aktualisiert.

13
Abhishek Kumar

Suchen Sie in der Datei Properties/launchSettings.json Ihres Projekts den Schlüssel applicationUrl. Sie finden so etwas wie:

...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...

Entfernen Sie den Endpunkt https und fertig.

Bearbeiten 

Wie von @Xorcist angemerkt, wird die Datei launchSettings.json nicht veröffentlicht. Die obige Lösung funktioniert also nur in einer Entwicklungsumgebung. Zur Deaktivierung von https und generell zum Konfigurieren der URLs, die Sie hören möchten, sowohl in der Produktion als auch in der Entwicklung, haben Sie folgende Möglichkeiten:

  • Verwenden Sie --urls-Parameter von dotnet run, hat dieselbe Wirkung wie die applicationUrl in launchSettings.json. Zum Beispiel: dotnet run --urls=http://0.0.0.0:5000,https://0.0.0.0:5001. Entfernen Sie erneut den, den Sie nicht verwenden möchten.

  • Dasselbe kann mit der Umgebungsvariable ASPNETCORE_URLS erreicht werden. 

  • Wie in der Antwort von @Konstantin auf diese Frage erwähnt, können Sie in ASP Net Core 2.1 auch Kestrel-Endpunkte im appsettings.json konfigurieren (dies scheint in 2.0 nicht möglich zu sein). 
  • Dasselbe kann schließlich auch mit der Erweiterungsmethode useUrlsWebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:5000") erreicht werden. Ich bevorzuge die andere Lösung, weil diese Ihre Anwendungsendpunkte fest codiert und nicht geändert werden kann, ohne die Anwendung neu zu kompilieren.

Alle möglichen Optionen werden in Microsoft Docs zu diesem ausführlich erläutert. 

8
joanlofe

Die dotnet-CLI verfügt jetzt über eine Vorlage.

dotnet new webapi --no-https
0
Clay

Fügen Sie in den Program.cs wie folgt UseUrls hinzu:

WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();

Und in The Startup.cs entfernen/kommentieren Sie Folgendes:

app.UseHttpsRedirection();
0
BlackBrain

Mit ASPNET CORE 2.2 setze ich einfach die URL des Webservers auf http und nicht auf https und er nimmt sie selbst auf. Ich führe es als selbst gehosteten Prozess aus.

  1. Gehen Sie zu Ihren Projekteigenschaften.
  2. Klicken Sie auf die Registerkarte Debuggen.
  3. Legen Sie unter Webserver-Einstellungen die URL auf http: // xxx fest
  4. Versuch es noch einmal :)
0
D-Go