Hace dos días, reimprimí un análisis de arranque de .NET core, porque estaba enredado en el puerto 5000 por defecto cuando salió, así que lo estudié detenidamente.
1. Integración del IIS
Si usas IIS como host, entonces no hay problema, un IIS potente puede ayudarnos a configurar el nombre de dominio, el puerto, etc. del sitio. En cuanto a cómo desplegar una aplicación web asp.net núcleo en IIS, ese no es el punto aquí. Descríbelo de forma aproximada:
Necesitas descargar el SDK de Net Core y el alojamiento del servidor, y la dirección de descarga es https://www.microsoft.com/net/download
Tras la instalación, comprueba si el SDK .NET Core está instalado correctamente en la información de línea de comandos
Si el host del servidor está instalado correctamente en el módulo IIS y el mapeo del manejador se muestra a continuación
Luego configura el sitio y especifica los archivos para el sitio de publicación
Finalmente, el conjunto de programas debe configurarse y elegir no gestionado, para que haya una solicitud de reenvío del host del servidor.
2. Entorno Linux
Sin mencionar la instalación específica, también hay muchas. Según las instrucciones de la web oficial, es decir, instala el entorno de ejecución de .NET Core y puede estar funcionando.
Aquí tienes una entrada recomendada para tu propia referencia: Despliegue de aplicaciones ASP.NET Core en producción (CentOS7)
Volviendo al punto principal, cómo configurar los parámetros de URL y puerto
1. Especificar en el método principal del programa
Este enfoque es inflexible y no tan elegante, incluso si se lee añadiendo un archivo de configuración. En ese momento, sentí que Microsoft definitivamente no recomendaría ese uso, así que seguí buscándola.
2. Pasar la variable de entorno
Vi un artículo en Internet sobre cómo configurar URLs de Kestrel en ASP.NET Core RC2,
Aunque sigue configurándose a través del archivo de configuración, no necesita leer la información de configuración en otros artículos, y puede usarse directamente vinculando o pegando el código para ver:
hosting.json
Program.cs
Así también puede escuchar
Ahora escuchando: http://localhost:60000
Ahora escuchando en: http://localhost:60001
¡No es increíble! No soporto el combate en sí, ¡quita el código fuente! ¡Lo mejor de .NET Core es que tiene código fuente!
Al informar sobre fuentes, podemos saber que es principalmente la clase WebHostBuilder, dentro del espacio de nombres Microsoft.AspNetCore.Hosting.
El método principal es Build
El objetivo principal aquí es construir un objeto WebHost y luego buscar más allá
Al analizar el código fuente mediante el método Initialize, podemos conocer la dirección URL creada por el método EnsureServer
Aquí podemos ver que lee _config[WebHostDefaults.ServerUrlsKey] y _config[DeprecatedServerUrlsKey] desde la configuración.
El valor de WebHostDefaults.ServerUrlsKey es un valor fijo
El valor de DeprecatedServerUrlsKey se define al principio del objeto WebHost
¡Oh! La verdad se revela. Así que podemos establecer "server.urls" en el archivo de configuración.
Resumen:
En resumen, asp.net núcleo leerá la configuración en la variable de entorno cuando se inicia, y el objetivo real es añadir la siguiente configuración a las propiedades del proyecto:
Se ha iniciado en modo consola y he comprobado que el puerto ha sido cambiado.
Así que este es un entorno de desarrollo, ¿cómo desplegarlo en la línea de producción? Esto también es muy sencillo, tomando el despliegue de Linux como ejemplo, usando el supervisor del daemon para iniciar el programa, añadir variables de entorno a la configuración de inicio del supervisor:
¡Ten éxito con nota! No hace falta cambiar ni una sola línea de código, jaja~ |