net - usehttpsredirection
ASP.NET Core 2.1+Kestrel(Cómo deshabilitar HTTPS) (4)
En el Startup.cs, elimina el middleware.
app.UseHttpsRedirection();
Así que aparece con el advenimiento de ASP.NET Core 2.1, Kestrel ahora crea automáticamente un punto final HTTPS junto con el HTTP, y las plantillas de proyecto predeterminadas están configuradas para redirigir de HTTP a HTTPS (que es bastante fácil de deshacer).
Sin embargo, mi pregunta es ... ¿cómo puedo desactivar HTTPS por completo para mi proyecto? He leído los documentos y he jugado con una variedad de ajustes de configuración para HTTPS, pero nada de lo que hago parece permitirme apagarlo y simplemente ejecutar un proyecto HTTP.
¿Estoy loco o simplemente estoy perdiendo algo? Espero que esto sea muy fácil de hacer.
En el archivo Properties/launchSettings.json
de su proyecto, busque la clave applicationUrl
. Encontrarás algo como:
...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...
Eliminar el punto final https
y se hace.
Editar
Como lo señaló @Xorcist, el archivo launchSettings.json
no está publicado. Por lo tanto, la solución anterior solo funcionará en un entorno de desarrollo. Para deshabilitar https y, en general, para configurar las URL que desea escuchar, tanto en producción como en desarrollo, también puede realizar una de las siguientes acciones:
Utilice los parámetros de
--urls
de ladotnet run
--urls
, tendrá el mismo efecto que elapplicationUrl
enlaunchSettings.json
. Por ejemplo:dotnet run --urls=http://0.0.0.0:5000,https://0.0.0.0:5001
. De nuevo, elimina el que no quieras usar.Lo mismo se puede lograr con la variable de entorno
ASPNETCORE_URLS
.- Como se menciona en la respuesta de @Konstantin a esta pregunta , en ASP Net Core 2.1 también puede configurar los puntos finales Kestrel en
appsettings.json
(parece que esto no se puede hacer en 2.0). - Finalmente, lo mismo puede lograrse con el método de extensión
WebHost.CreateDefaultBuilder(args).UseUrls("http://0.0.0.0:5000")
. Prefiero la otra solución porque estos son códigos fijos que son puntos finales de la aplicación y no se pueden cambiar sin volver a compilar la aplicación.
Todas las opciones posibles se explican en detalle en los documentos de Microsoft sobre esto .
Resulta que la forma correcta de lograr lo que quería hacer era configurar Kestrel específicamente con .UseKestrel () y simplemente especificar una única dirección, como esta:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
})
.UseStartup<Startup>();
afecta a la anulación de la configuración predeterminada y muestra esta advertencia cuando se inicia Kestel:
warn: Microsoft.AspNetCore.Server.Kestrel[0]
Overriding address(es) ''https://localhost:5001, http://localhost:5000''. Binding to endpoints defined in UseKestrel() instead.
si se especifica una segunda dirección, se asumirá que esa dirección se debe asegurar con el certificado de desarrollador incorporado, como tal:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
options.Listen(IPAddress.Loopback, 5443); //HTTPS port
})
.UseStartup<Startup>();
Por supuesto, puede proteger específicamente su dirección SSL como se describe aquí:
que es necesario para configuraciones de producción.
Si está utilizando Visual Studio 2017, puede hacer lo siguiente:
- Ve a las propiedades de tu proyecto. (Clic derecho> Propiedades)
- Haga clic en la pestaña Depuración.
- En Configuraciones de servidor web, deseleccione Habilitar SSL.
- Guarda, construye e intenta de nuevo.
Esto actualizará la configuración de iisExpress en el archivo launchSettings.json.