Pregunta

¿Hay una forma recomendada de rebotar una aplicación asp.net además de tocar web.config desde dentro de la aplicación? es HttpRuntime.UnloadAppDomain () ; ¿La forma preferida de hacer esto? y si es así, ¿dónde haces esto? ¿En la descarga de una página o algún otro lugar en la aplicación?

¿Fue útil?

Solución

Si esto es .NET 2.0 o superior, entonces puede agregar un " App_offline.htm " archivo, realice una solicitud al servidor, elimínelo y, a continuación, realice otra solicitud al servidor.

Esta secuencia de eventos obligará a ASP.NET a descargar la aplicación mientras exista el archivo app_offline.htm en la carpeta.

Entrada de blog de Scott Guthrie en él: http://weblogs.asp.net/scottgu/archive/2005 /10/06/426755.aspx

Otros consejos

Tocar web.config desde dentro de una aplicación es una mala idea, IMO. Además, la idea de tener un archivo que modifiques es un poco truco, OMI.

La documentación indica específicamente que UnloadAppDomain cerrará la aplicación:

  

UnloadAppDomain permite el cierre programático de aplicaciones no utilizadas.

Debería poder hacer esta llamada en cualquier lugar de la aplicación. Tenga en cuenta que puede obtener un SecurityException , así que asegúrate de que el tiempo de ejecución te dé los permisos apropiados (es posible que desees poner esto en una biblioteca y hacer una llamada y luego configurar la biblioteca en el GAC con evidencia para darle plena confianza).

este código funciona para mí. simplemente llámalo para recargar la aplicación.

System.Web.HttpRuntime.UnloadAppDomain();

Leer más

  

Este método solo descargará nuestra aplicación. Si acaba de poner este método en un botón web ASP.NET, está totalmente listo. Entonces, ¿cuándo se volverá a cargar nuestra aplicación? En realidad, si hace clic en el botón, primero iniciará nuestro método y descargará la aplicación. Más adelante, la página web en la que estamos en ese momento también se volverá a cargar, porque simplemente hicimos clic en un botón y la página web debería actualizarse. Después de lanzar nuestro método, el proceso de actualización de la página hará que nuestra aplicación también se vuelva a cargar.

También puede detener e iniciar el grupo de aplicaciones asociado con la aplicación.

Puede hacerlo llamando al método HttpRuntime.ShutdownAppDomain (deberá usar la reflexión para invocarlo, ya que es un método estático privado)

Vea Cómo reiniciar un proceso de trabajo de IIS programáticamente (es decir, apagar el dominio ASP.NET actual) para un ejemplo de cómo uso este método en una API REST de 'Reinicio'

Puede reiniciar una aplicación web de forma segura creando o cambiando el nombre de una carpeta en tiempo de ejecución en el directorio de la aplicación. Obviamente, debe proporcionar al usuario asignado que ejecute la aplicación " modificar " derechos al directorio web o a un subdirectorio debajo de él.

el método se menciona en http://www.bartlannoeye.be/ blog / restarting-a-.net-web-application-without-restarting-iis

Utilicé el siguiente código para hacerlo en mi caso. Modifíquelo para que funcione en un " grabable " subdirectorio

protected void RestartButton_Click(object sender, EventArgs e)
{
    //restart web app (instead of iisreset)
    DirectoryInfo dir = new DirectoryInfo(Server.MapPath("restart"));
    if (dir.Exists)
    {
        Directory.Move(dir.FullName, dir.FullName + "ed");
    }
    else
    {
        DirectoryInfo dired = new DirectoryInfo(Server.MapPath("restarted"));
        if (dired.Exists)
        {
            Directory.Move(dired.FullName, dir.FullName);
        }
        else
        {
            Directory.CreateDirectory(dir.FullName);
        }
    }
}

Si no desea detener e iniciar el grupo de aplicaciones, siempre puede reciclarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top