es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

web.config se modifica cuando se publica.

Tengo una aplicación web asp.net y todo está funcionando correctamente. Ahora quiero cargar otra aplicación en un subdominio de mi servidor y para ejecutar ambas, tengo que cambiar el valor de hostingModel de “inprocess” a “outofprocess”.
Así que modifiqué mi archivo web.config de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="." inheritinchildapplications="false">
        <system.webserver>
            <handlers>
                <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourcetype="Unspecified"></add>
            </handlers>
            <aspnetcore processpath="dotnet" arguments=".\AmsWebApp.dll" stdoutlogenabled="false" stdoutlogfile=".\logs\stdout" hostingmodel="outofprocess"></aspnetcore>
        </system.webserver>
    </location>
</configuration>

<!--ProjectGuid: XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX-->

He descubierto que cuando publico mi aplicación, el archivo web.config original de la carpeta bin\Release\net6.0 se borra y aparece uno nuevo y diferente en la carpeta obj\Release\net6.0\PubTmp\Out que se ve así:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritinchildapplications="false">
    <system.webserver>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourcetype="Unspecified"></add>
      </handlers>
      <aspnetcore processpath="dotnet" arguments=".\AmsWebApp.dll" stdoutlogenabled="false" stdoutlogfile=".\logs\stdout" hostingmodel="inprocess"></aspnetcore>
    </system.webserver>
  </location>
</configuration>

¿Por qué está sucediendo esto y qué debo hacer para evitarlo?
Muchas gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en visual-studio, asp.net-web-api, web-config y publish, puedo explicar por qué esto está sucediendo y proporcionar una solución para evitarlo.

    Cuando publicas tu aplicación, Visual Studio crea un nuevo archivo web.config con valores predeterminados basados ​​en tu entorno de alojamiento. En tu caso, el valor predeterminado para hostingModel es “inprocess”. Es por eso que el archivo web.config en la carpeta obj\Release\net6.0\PubTmp\Out tiene el hostingModel configurado como “inprocess” en lugar de “outofprocess”.

    Para evitar este problema, puedes agregar un archivo de transformación a tu proyecto. En este archivo de transformación, puedes especificar los valores deseados para tu archivo web.config. Cuando publiques tu aplicación, Visual Studio utilizará este archivo de transformación para crear el archivo web.config en lugar de utilizar los valores predeterminados.

    Para agregar un archivo de transformación:

    1. Haz clic derecho en tu proyecto en el Explorador de soluciones y selecciona “Agregar” > “Nuevo elemento”.
    2. Selecciona “Archivo XML” de la lista de plantillas y nombra el archivo “Web.Release.config”.
    3. En este archivo, agrega el siguiente código:
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
        <location path="." inheritinchildapplications="false">
            <system.webserver>
                <handlers>
                    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourcetype="Unspecified"></add>
                </handlers>
                <aspnetcore processpath="dotnet" arguments=".\AmsWebApp.dll" stdoutlogenabled="false" stdoutlogfile=".\logs\stdout" hostingmodel="outofprocess" xdt:transform="SetAttributes(hostingModel)"></aspnetcore>
            </system.webserver>
        </location>
    </configuration>
    
    1. Guarda el archivo y publica tu aplicación.

    Este archivo de transformación solo se aplicará cuando publiques tu aplicación en modo Release. Cuando publiques en modo Debug, se seguirán utilizando los valores predeterminados para el archivo web.config.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.