Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Archivo
Nota:
Esta no es la versión más reciente de este artículo. Para la versión actual, consulte la versión de .NET 10 de este artículo.
Advertencia
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulte la directiva de compatibilidad de .NET y .NET Core. Para la versión actual, consulte la versión de .NET 10 de este artículo.
El web.config es un archivo leído por IIS y el módulo ASP.NET Core para configurar una aplicación hospedada con IIS.
Ubicación del archivo web.config
Para configurar el módulo ASP.NET correctamente, el archivo web.config debe estar presente en la ruta raíz de contenido (normalmente la ruta de acceso base de la aplicación) de la aplicación implementada. Se trata de la misma ubicación que la ruta de acceso física del sitio web proporcionada a IIS. El archivo web.config debe estar en la raíz de la aplicación para habilitar la publicación de varias aplicaciones mediante Web Deploy.
Los archivos confidenciales están en la ruta de acceso física de la aplicación, como {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml (comentarios de documentación XML), y {ASSEMBLY}.deps.json, donde el marcador de posición {ASSEMBLY} es el nombre del ensamblado. Si el archivo web.config está presente y el sitio se inicia normalmente, IIS no facilita estos archivos confidenciales, en el caso de que se soliciten. Si falta el web.config archivo, se llama incorrectamente o no puede configurar el sitio para el inicio normal, IIS podría servir archivos confidenciales públicamente.
El archivo web.config debe estar presente en la implementación en todo momento, se le debe asignar un nombre correcto y debe ser capaz de configurar el sitio para el inicio normal. Nunca quite el archivo web.config de una implementación de producción.
Si el proyecto no incluye un archivo web.config, el archivo se crea con los elementos processPath y arguments correctos para configurar el módulo ASP.NET Core y se mueve a la salida publicada.
Si el proyecto incluye un archivo web.config, el archivo se transforma con los elementos processPath y arguments correctos para configurar el módulo ASP.NET Core y se mueve a la salida publicada. La transformación no modifica los valores de configuración de IIS del archivo.
El web.config archivo puede proporcionar opciones de configuración de IIS adicionales que controlan los módulos DE IIS activos. Para obtener información sobre los módulos iiS que son capaces de procesar solicitudes con aplicaciones ASP.NET Core, consulte el artículo IIS modules.
Un destino de MSBuild (_TransformWebConfig) controla la creación, transformación y publicación del web.config archivo cuando se publica el proyecto. Este destino está incluido entre los destinos del SDK web (Microsoft.NET.Sdk.Web). El SDK se establece al inicio del archivo del proyecto:
<Project Sdk="Microsoft.NET.Sdk.Web">
Para evitar que el SDK web transforme el archivo web.config, use la propiedad <IsTransformWebConfigDisabled> en el archivo del proyecto:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
Al deshabilitar el SDK web para transformar el archivo, el desarrollador debe establecer processPath manualmente y arguments. Para obtener más información vea Módulo de ASP.NET Core (ANCM) para IIS.
Configuración del módulo de ASP.NET Core con web.config
El módulo ASP.NET Core se configura con la sección aspNetCore del nodo system.webServer del archivo web.config del sitio.
El siguiente archivo web.config se publica para una implementación dependiente del marco y configura el módulo ASP.NET Core para controlar las solicitudes de sitios:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
El siguiente archivo web.config se publica para una implementación independiente:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
La propiedad InheritInChildApplications está establecida en false para indicar que las aplicaciones que residen en un subdirectorio de la aplicación no heredan la configuración especificada en el elemento <location>.
Cuando se implementa una aplicación en Azure App Service, la ruta de acceso de stdoutLogFile se establece en \\?\%home%\LogFiles\stdout. La ruta de acceso guarda los registros de stdout en la carpeta LogFiles, que es una ubicación que el servicio crea automáticamente.
Para obtener información sobre la configuración de aplicaciones secundarias de IIS, vea Configuración avanzada.
Atributos del elemento aspNetCore
| Atributo | Descripción | Default |
|---|---|---|
arguments |
Atributo de cadena opcional. Argumentos para el archivo ejecutable especificado en |
|
disableStartUpErrorPage |
Atributo Boolean opcional. Si es true, la página 502.5 - Error en el proceso se suprime, y tiene prioridad la página de código de estado 502 configurada en |
false |
forwardWindowsAuthToken |
Atributo Boolean opcional. Si es true, el token se reenvía al proceso secundario que escucha en |
true |
hostingModel |
Atributo de cadena opcional. Especifica el modelo de hospedaje como en proceso ( |
OutOfProcess
/
outofprocess cuando no está presente |
processesPerApplication |
Atributo integer opcional. Especifica el número de instancias del proceso especificado en el valor †En el hospedaje en proceso, el valor está limitado a No se recomienda establecer |
Valor predeterminado: 1Mínimo: 1Máximo: 100† |
processPath |
Atributo de cadena necesario. Ruta de acceso al archivo ejecutable que inicia un proceso que escucha las solicitudes HTTP. Se admiten rutas de acceso relativas. Si la ruta de acceso comienza con |
|
rapidFailsPerMinute |
Atributo integer opcional. Especifica el número de veces que el proceso indicado en No compatible con el alojamiento en proceso. |
Valor predeterminado: 10Mínimo: 0Máximo: 100 |
requestTimeout |
Atributo timespan opcional. Especifica el tiempo que el módulo ASP.NET Core espera una respuesta del proceso que escucha en % ASPNETCORE_PORT %. En las versiones del módulo ASP.NET Core que se envían con la versión de ASP.NET Core 2.1 o posterior, el valor No se aplica al hospedaje en proceso. En el hospedaje en proceso, el módulo espera a que la aplicación procese la solicitud. Los valores válidos para los segmentos de minutos y segundos de la cadena se encuentran en el rango 0-59. El uso de |
Valor predeterminado: 00:02:00Mínimo: 00:00:00Máximo: 360:00:00 |
shutdownTimeLimit |
Atributo integer opcional. Tiempo en segundos que el módulo espera a que el ejecutable se cierre correctamente cuando se detecta el archivo |
Valor predeterminado: 10Mínimo: 0Máximo: 600 |
startupTimeLimit |
Atributo integer opcional. Tiempo en segundos que el módulo espera a que el archivo ejecutable inicie un proceso que escucha en el puerto. Si se supera este límite de tiempo, el módulo termina el proceso. Al hospedar en proceso: El proceso no se reinicia y no usa la configuración Al hospedar fuera del proceso: El módulo intenta reiniciar el proceso cuando se recibe una nueva solicitud y lo sigue intentando en las sucesivas solicitudes entrantes a no ser que la aplicación no pueda iniciar Un valor de 0 (cero) no se considera un tiempo de espera infinito. |
Valor predeterminado: 120Mínimo: 0Máximo: 3600 |
stdoutLogEnabled |
Atributo Boolean opcional. Si "true", |
false |
stdoutLogFile |
Atributo de cadena opcional. Especifica la ruta de acceso relativa o absoluta para la que se registran |
aspnetcore-stdout |
Establecimiento de las variables de entorno
Se pueden especificar variables de entorno para el proceso en el atributo processPath. Especifique una variable de entorno con el elemento secundario <environmentVariable> de un elemento de la colección <environmentVariables>. Las variables de entorno establecidas en esta sección tienen prioridad sobre las variables del entorno del sistema.
En el ejemplo siguiente se establecen dos variables de entorno en web.config.
ASPNETCORE_ENVIRONMENT configura el entorno de la aplicación como Development. Un desarrollador podría establecer temporalmente este valor en el web.config archivo para forzar la carga de la página de excepciones del desarrollador al depurar una excepción de aplicación.
CONFIG_DIR es un ejemplo de una variable de entorno definida por el usuario, donde el desarrollador ha escrito código que lee el valor al inicio para formar una ruta de acceso destinada a la carga del archivo de configuración de la aplicación.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="CONFIG_DIR" value="f:\application_config" />
</environmentVariables>
</aspNetCore>
Nota:
Una alternativa a establecer directamente el entorno en web.config consiste en incluir la propiedad <EnvironmentName> en el perfil de publicación (.pubxml) o el archivo de proyecto. Este método establece el entorno en web.config cuando se publica el proyecto:
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
Advertencia
Establezca solo la variable de entorno ASPNETCORE_ENVIRONMENT en Development en servidores de ensayo y pruebas a los que no puedan acceder redes que no son de confianza, como Internet.
Configuración de IIS con web.config
En escenarios de IIS que son funcionales para aplicaciones ASP.NET Core con el módulo ASP.NET Core, la configuración de IIS está influenciada por la sección <system.webServer> de web.config. Por ejemplo, la configuración de IIS es funcional para la compresión dinámica. Si IIS está configurado en el nivel de servidor para usar compresión dinámica, el elemento <urlCompression> del archivo web.config de la aplicación puede deshabilitarlo para una aplicación ASP.NET Core.
Para obtener más información, consulte los artículos siguientes:
-
Referencia de configuración para
<system.webServer> - Módulo ASP.NET Core (ANCM) para IIS
- Módulos de IIS con ASP.NET Core
Para establecer variables de entorno para aplicaciones individuales que se ejecutan en grupos de aplicaciones aislados (compatibles con IIS 10.0 o posterior), consulte la AppCmd.exe sección de comandos del artículo Variables <environmentVariables>de entorno en la documentación de referencia de IIS.
Secciones de configuración de web.config
Las aplicaciones ASP.NET Core no usan las secciones de configuración de aplicaciones ASP.NET 4.x en web.config para la configuración:
<system.web><appSettings><connectionStrings><location>
Las aplicaciones de ASP.NET Core se configuran mediante otros proveedores de configuración. Para obtener más información, vea Configuración.
Transformación de web.config
Si necesita transformar web.config al realizar la publicación, consulte Transformación de web.config. Es posible que necesite transformar web.config al realizar la publicación para establecer variables de entorno basadas en la configuración, el perfil o el entorno.