Archivo launchSettings.json en ASP.NET Core
El archivo launchSettings.json
contiene la configuración que permite a Visual Studio o la CLI de .NET, conocer cómo se va a comportar la aplicación al momento de ejecutarse en el entorno local de desarrollo.
Sus principales características son:
- Permite probar de forma rápida y fácil, el comportamiento de una aplicación en diferentes entornos, sin afectar a otras.
- Se puede usar solamente en el ambiente local de desarrollo.
- No se implementa al momento de publicar el sitio web.
- Los valores establecidos en el mismo, invalidan a los del entorno global del sistema.
- Permite configurar varios perfiles de depuración.
- Se localiza en la carpeta Properties.
Partes del Archivo launchSettings.json
El archivo launchSettings.json
esta formado por 2 grupos de objetos o definiciones:
iisSettings:
Define la configuración base del servidor web IIS, al momento de utilizar los perfiles IIS e IIS Express.profiles:
Contiene la lista de perfiles de depuración.
iisSettings
Propiedad | Tipo | Valor Predeterminado | Descripción |
---|---|---|---|
windowsAuthentication | boolean | false | Habilita la autenticación Windows del el sitio en los servidores web IIS e IIS Express. |
anonymousAuthentication | boolean | true | Habilita la autenticación anónima del sitio en los servidores web IIS e IIS Express. |
iisExpress | objeto | - | Establece la configuración del sitio cuando se usa el perfil IIS Express. |
iis | objeto | - | Establece la configuración del sitio cuando se usa el perfil IIS. |
iisExpress / iis
Propiedad | Tipo | Valor Predeterminado | Formato | Restricciones | Descripción |
---|---|---|---|---|---|
applicationUrl | string | Vacío | URI | - | URL del sitio web. |
sslPort | integer | 0 | - | Entre 0 y 65535 | Puerto SSL del sitio web. |
profiles
Define la lista de perfiles de depuración. Las propiedades básicas y que son configuradas de forma predeterminada al momento de crear el proyecto son:
Propiedad | Tipo | Valor Predeterminado | Valores Permitidos | Descripción |
---|---|---|---|---|
commandName | string | Vacío | IISExpress, IIS, Project, Executable, DebugRoslynComponent, Docker, DockerCompose, MsixPackage, WSL2 | Identifica el destino de depuración a ejecutar. |
dotnetRunMessages | boolean | true | - | Establece si se muestran mensajes cuando el proyecto se esté ejecutando. |
launchBrowser | boolean | false | - | Define si se inicia el navegador web al momento de ejecutar la aplicación. |
applicationUrl | string | - | - | URL relativa inicial del navegador web. |
launchUrl | string | - | - | URL relativa inicial del navegador web. |
environmentVariables | object | - | - | Establece las variables de entorno como pares clave/valor. |
-
El valor de la propiedad
commandName
especifica el tipo de servidor web que se va a iniciar. Los valores que se configuran de forma predeterminada son:IISExpress
: Inicia el servidor web IIS Express.IIS
: No se ha iniciado ningún servidor web. Se espera que IIS esté disponible.Project
: Inicia el servidor web Kestrel.
- Si al momento de iniciar la aplicación ASP.NET Core no encuentra la variable de entorno
ASPNETCORE_ENVIRONMENT
, el valor predeterminado es Producción, lo que asegura que se usa el entorno correcto al momento de publicar el sitio en el ambiente de Producción. - El comando
project
es equivalente a llamardotnet run
.
Existen tambien propiedades adicionales:
Propiedad | Tipo | Valor Predeterminado | Valores Permitidos | Descripción |
---|---|---|---|---|
commandLineArgs | string | Vacío | - | Argumentos a pasar al objetivo que se está ejecutando. |
executablePath | string | Vacío | - | Ruta absoluta o relativa del ejecutable. |
workingDirectory | string | - | - | Establece el directorio de trabajo del comando. |
nativeDebugging | boolean | false | - | Habilitar la depuración de código nativo. |
externalUrlConfiguration | boolean | false | - | Habilita la configuración del sitio cuando se ejecuta el perfil del proyecto ASP.NET Core. |
use64Bit | boolean | true | - | Establece si se ejecuta la versión de 64 bits de IIS Express, y caso contrario la versión x86. |
ancmHostingModel | - | - | InProcess, OutOfProcess | Especifica el modelo de alojamiento que se utilizará al ejecutar proyectos principales de ASP.NET en IIS e IIS Express. |
sqlDebugging | boolean | false | - | Habilita la depuración de scripts SQL y procedimientos almacenados. |
jsWebView2Debugging | boolean | false | - | Habilita el depurador de JavaScript para WebView2 basado en Microsoft Edge (Chromium). |
leaveRunningOnClose | boolean | false | - | Permite que IIS siga ejecutándose cuando se cierre el proyecto. |
remoteDebugEnabled | boolean | false | - | Establece si el depurador se conecta a un proceso en una computadora remota. |
remoteDebugMachine | string | - | - | El nombre y número de puerto de la máquina remota en formato nombre:puerto. |
authenticationMode | boolean | None | None, Windows | Especifica el esquema de autenticación que se utilizará al conectarse a la computadora remota. |
hotReloadEnabled | boolean | true | - | Permite realizar cambios al código de la aplicación en tiempo ejecución. |
publishAllPorts | boolean | true | - | Publique todos los puertos expuestos en puertos aleatorios en Docker (-P). |
useSSL | boolean | true | - | Habilita el uso de puerto SSL. |
sslPort | integer | 0 | Entre 0 y 65535 | El puerto SSL que el sitio web utilizará. |
httpPort | integer | 0 | Entre 0 y 65535 | El puerto HTTP que el sitio web utilizará. |
inspectUri | string | (1) | - | La dirección URL que habilitará la depuración en una aplicación Blazor WebAssembly. |
targetProject | string | Vacío | - | Ruta relativa o absoluta al archivo de proyecto .NET en el que se debe ejecutar el componente Roslyn. |
(1) El valor predeterminado de inspectUri
es {wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}
Archivo launchSettings.json de Ejemplo
El archivo launchSettings.json
siguiente, es un archivo básico y común que se genera de forma predeterminada al momento de crear un proyecto ASP.NET Core.
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:55697",
"sslPort": 44318
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5084",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:5634;http://localhost:5084",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https-Production": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:5634;http://localhost:5084",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production",
"ASPNETCORE_DETAILEDERRORS": "1",
"ASPNETCORE_SHUTDOWNTIMEOUTSECONDS": "3"
}
}
}
}
Hay varios puntos clave a recalcar:
- Los tres primeros perfiles:
http
,https
eIIS Express
, por lo general son los que se generan de forma predeterminada al momento de crear el proyecto. Si se eligen, ejecutarán la aplicación en ambiente de Desarrollo. - El cuarto perfil con nombre
https-Production
, es personalizado y si se elige, ejecutará la aplicación en ambiente de Producción. - Los perfiles
http
,https
yhttps-Production
tienen configurada la propiedadcommandName
enProject
, que significa que el sitio se hospedará en el servidor web Kestrel. - El perfil
IIS Express
tienen configurada la propiedadcommandName
enIISExpress
, por lo tanto el sitio se hospedará en el servidor web IIS Express. - El perfil
http
es usado de forma predeterminada en Visual Stucio macOS. - El perfil
https
es usado de forma predeterminada en Visual Studio Windows. - El perfil
https
escucha en ambos protocolos: http:// y https:// - Cada perfil puede tener diferentes variables de entorno, tal como se puede observar en el perfil personalizado
https-Production
.
launchSettings.json Visual Studio y la CLI de .NET
Para elegir el perfil de depuración en Visual Studio 2022, hay que dirigirse a la barra de herramientas Standard, menú desplegable a lado del botón Depurar, tal como se puede observar en la siguiente imagen:
Esta acción de Visual Studio equivale al siguiente comando de la CLI de .NET:
dotnet run --launch-profile https-Production
Si no se especifica un perfil, la CLI de .NET utilizará el primero que se encuentre en el archivo launchSettings.json
.
dotnet run
Si no desea utilizar ningún perfil, se puede ignorar explícitamente mediante el parámetro --no-launch-profile
.
dotnet run --no-launch-profile
Cabe recalcar que la CLI de .NET solo soporta los perfiles con tipos de comando que ejecuten el servidor web Kestrel. Por lo que ejecutar el siguiente comando:
dotnet run --launch-profile "IIS Express"
Tendrá como resultado el siguiente error:
The launch profile "IIS Express" could not be applied.
The launch profile type "IISExpress" is not supported.
De igual forma el siguiente comando:
dotnet run --launch-profile "IIS"
Tendrá como resultado el siguiente error:
The launch profile "IIS" could not be applied.
The launch profile type "IIS" is not supported.
Editar el Archivo launchSettings.json Visualmente desde Visual Studio 2022
Visual Studio permite editar el archivo launchSettings.json
de forma gráfica de dos formas.
La primera:
- Seleccionar el proyecto ASP.NET Core.
- Presionar el clic derecho y elegir la opción Propiedades, o presionar la combinación de teclas Alt+Enter.
- Elegir la pestaña Debug.
- Presionar el enlace Open debug launch profiles UI.
La segunda y la más fácil de acceder es mediante el mismo menú que permite elegir los perfiles de lanzamiento o depuración, y elegir la opción <Nombre del Proyecto> Debug Properties.
La ventana de Launch Profiles o Perfiles de Lanzamiento se abrirá, y se mostrarán todos los perfiles configurados, pudiendo así editarlos.