¿Existe alguna forma recomendada de hacer rebotar una aplicación asp.net además de tocar web.config desde el interior 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?cómo reiniciar la aplicación asp.net además de modificar web.config
Respuesta
Si se trata de .NET 2.0 o superior, puede agregar un archivo "App_offline.htm", realizar una solicitud al servidor, eliminarla y luego realizar 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.
el blog de Scott Guthrie en él: http://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx
Puede detener e iniciar el grupo de aplicaciones asociado con la aplicación también.
pero esto es de IIS a la derecha. en algunos casos, es posible que no tenga acceso al cuadro de IIS, así que estoy buscando algo programático. – MikeJ
Puede reciclar el grupo de aplicaciones utilizando WMI: http://blogs.iis.net/chrisad/archive/2006/08/30/Recycling-Application-Pools-using-WMI-in-IIS-6.0.aspx – Portman
cool. No sabía que – MikeJ
web.config Tocar desde dentro de una aplicación es una mala idea, la OMI. Además, la idea de tener un archivo que modifique es un pequeño truco, IMO.
La documentación indica específicamente que se UnloadAppDomain
apagar la aplicación:
UnloadAppDomain permite el apagado programática de aplicaciones no utilizadas.
Debería poder realizar esta llamada en cualquier lugar de la aplicación. Eso sí, puede obtener un SecurityException
, así que asegúrese de que el tiempo de ejecución le otorgue los permisos apropiados (puede ponerlo en una biblioteca y hacer una llamada y luego configurar la biblioteca en el GAC con evidencia para darle plena confianza)
sí. esta es la razón por la que estaba preguntando. La modificación de web.config parecía fea y podría hacernos escribir en thedailyWTF.com :) – MikeJ
Creo que una línea mejor para citar sería: "Termina la aplicación actual. La aplicación se reinicia la próxima vez que se reciba una solicitud para ella". La parte "no utilizada" en esa cita se puede leer como "solo se cerrará si nadie la está usando", que no es el caso. –
Use System.Web.HttpRuntime.UnloadAppDomain() –
Si no desea detener e iniciar el grupo de aplicaciones siempre puede reciclarlo.
Esto se puede hacer mediante una llamada al HttpRuntime.ShutdownAppDomain método (que tendrá que utilizar la reflexión para invocarla, ya que es un método estático privado)
Ver How to restart an IIS Worker Process programmatically (i.e. shutdown the current ASP.NET Domain) para un ejemplo de cómo utilice este método en una API REST 'Restart'
Puede reiniciar de forma segura una aplicación web creando o renombrando una carpeta en tiempo de ejecución bajo el directorio de la aplicación. Obviamente, debe otorgarle al usuario asignado para ejecutar la aplicación los derechos de "modificación" 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
He utilizado el siguiente código para hacerlo en mi caso. Modificarlo para que funcione en un subdirectorio "editable"
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);
}
}
}
bien, esto no funciona para mí. ¡Veo que se está creando el directorio pero no se llama al evento application_Start! – KMX
Ese enlace de Bart Lannoeye parece estar muerto – brennanyoung
este código funciona para mí. solo llámalo para volver a cargar la aplicación.
System.Web.HttpRuntime.UnloadAppDomain();
Este método se acaba de descargar nuestra aplicación.Si acaba de poner este método en un botón web de ASP.NET, está totalmente hecho. Entonces, ¿cuándo se volverá a cargar nuestra aplicación? De hecho, si hace clic en su botón, primero se iniciará nuestro método y descargará la aplicación. Además, en 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 iniciar nuestro método, el proceso de actualización de la página hará que nuestra aplicación se vuelva a cargar también.
Parece que funciona bien, ¡y definitivamente es la solución más simple que se ofrece aquí! –
- 1. ¿Se puede modificar el archivo web.config y NO reiniciar la aplicación ASP.NET?
- 2. Cómo modificar el tiempo de ejecución de la sección web.config?
- 3. Localización de ASP.NET: ¿Cambia recursos sin reiniciar la aplicación?
- 4. Android Reiniciar la aplicación
- 5. reiniciar la aplicación sin reiniciar el servidor?
- 6. Cómo reiniciar la aplicación de Android desde la aplicación
- 7. Cómo cifrar ASP.NET 4.0 Web.Config?
- 8. ASP.NET Web.config AppSettings Rendimiento
- 9. Autorización Asp.net web.config
- 10. ASP.NET - Web.config condicional
- 11. ¿Se puede ejecutar una aplicación web ASP.NET sin web.config
- 12. ¿Reiniciar la computadora desde la aplicación WinForms?
- 13. Reiniciar aplicación usando C#
- 14. live asp.net web.config settings
- 15. ASP.NET Web.Config ConfigurationManager.AppSettings File Caching
- 16. ASP.NET ¿Cómo agregar el ensamblado en web.config?
- 17. Abra web.config desde la aplicación de consola?
- 18. asp.net mvc C# javascript web.config
- 19. Cómo reiniciar la aplicación si el apagado de forma inesperada
- 20. ¿Cómo localizar la aplicación ASP.NET MVC?
- 21. ¿Cómo mi aplicación ASP.NET obtiene la configuración SMTP automáticamente desde web.config?
- 22. ¿Cómo se modifican los ajustes de la aplicación web.config en tiempo de ejecución?
- 23. Reiniciar la aplicación Node.js con init.d
- 24. ASP.NET MVC: ¿cómo configurar web.config para la autenticación LDAP?
- 25. ¿Cómo se puede reiniciar mi aplicación?
- 26. Reiniciar otra aplicación. C#, .net
- 27. Reiniciar una aplicación en Crash
- 28. Cómo leer la configuración de las teclas de la aplicación web.config en la marca HTML
- 29. Reiniciar una aplicación en Eclipse
- 30. Reiniciar una aplicación en Eclipse
no es solo desconectar el sistema. Quiero que se reinicie/vuelva a cargar con la limpieza de la memoria caché/sesión y cosas así. cuando elimino el app_offline.htm esto lo traerá de vuelta por defecto? – MikeJ
@MikeJ - no. Cierra la aplicación y descarga el dominio de la aplicación del servidor hasta que se elimine el archivo. –
@MikeJ - También tenga en cuenta que esto NO es un cambio programático. Necesitará agregar y eliminar físicamente el archivo para que funcione –