net instalar framework enable asp asp.net content-management-system appdomain application-pool

instalar - ASP.NET se reinicia cuando se crea, renombra o elimina una carpeta



windows 2012 enable asp net (5)

Al agregar "fcnMode="Disabled" a la configuración de <httpRuntime> en web.config desactiva el reciclaje del dominio de aplicación cuando se modifica el contenido de la carpeta raíz web.

ACTUALIZACIÓN - proceso para replicar el problema:

1) Cree un proyecto de sitio web en c: / projects / restart-demo

2) Agregue el archivo web.config predeterminado y una página aspx ficticia test.aspx

3) Asigne IIS para que apunte a la carpeta raíz c: / projects / restart-demo

4) Supervisar reinicios de aplicaciones usando perfmon, monitoreo de salud, seguimiento en global.asax Application_End, etc.

5) Página de solicitud en el navegador http://localhost/test.aspx

inicio de aplicación

6) Crear una nueva carpeta c: / projects / restart-demo / asdf

fin de aplicación

7) Página de solicitud en el navegador http://localhost/test.aspx

inicio de aplicación

8) Cambiar el nombre de la carpeta c: / projects / restart-demo / asdf a c: / projects / restart-demo / asdf1

fin de aplicación

actualización final

Estamos utilizando un CMS de servicios de fondo para generar archivos y carpetas en un sitio ASP.NET.

Los usuarios pueden crear / modificar / eliminar archivos y enviarlos a la granja de servidores web.

Un problema que hemos notado:

Cuando el usuario crea, renombra o elimina una carpeta , se reinicia el dominio de la aplicación. Como consecuencia, sesión, caché, etc. se pierden.

Tenga en cuenta que tampoco es necesario que sea una carpeta especial como / bin o / App_Code.

¿Hay alguna manera de prevenir este comportamiento?

Realmente está obstaculizando el rendimiento por dos razones:

  • El caché se vuelca cuando se reinicia la aplicación.
  • El dominio de la aplicación debe ser reconstruido después del reinicio

De manera predeterminada, una aplicación asp.net se reiniciará cada 15ª vez que un archivo cambie dentro de su directorio virtual, esto es para compensar las recompilaciones parciales y su peso de memoria frente al rendimiento general ... puede cambiar este comportamiento, pero el uso de memoria puede aumentar y el rendimiento dejar con el tiempo.

Para hacer esto, establezca el atributo numRecompilesBeforeAppRestart en el elemento de compilación , su web.config tendría un elemento en como este:

<configuration> <system.web> <compilation numRecompilesBeforeAppRestart="15">

El valor predeterminado es 15, puede cambiarlo a lo que desee, lea el enlace para obtener más información. Sin embargo, es así por una razón , no se recomienda tener su contenido dinámico dentro del directorio virtual de la aplicación, es mejor tenerlo junto a él o en algún otro lugar por completo.


Este código parece resolver el problema, cuando se agrega a Application_Start () en Global.asax:

PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static); object o = p.GetValue(null, null); FieldInfo f = o.GetType().GetField("_dirMonSubdirs", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase); object monitor = f.GetValue(o); MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", BindingFlags.Instance | BindingFlags.NonPublic); m.Invoke(monitor, new object[] { });

http://dotnetslackers.com/Community/blogs/haissam/archive/2008/11/12/disable-session-expiration-when-using-directory-delete.aspx

Con estos cambios, puedo crear / modificar / eliminar carpetas sin hacer que la aplicación se reinicie.

No está claro si esta es la mejor solución. No sé si habrá efectos secundarios no deseados debido a la llamada a StopMonitoring.


Habilite la supervisión de estado de ASP.NET y busque en el registro de eventos para ver por qué se reinició el dominio de aplicación.

Apuesto a que esto se debe a que ha utilizado un proyecto de sitio web, en lugar de un proyecto de aplicación web. Intenta reproducir esto con un proyecto de aplicación web.

Además, ¿tiene algún software antivirus o de indexación en ejecución? Dichos avisos de software cuando se crean y / o modifican carpetas.


Quizás un poco tarde, pero el almacenamiento y manejo de sus archivos temporales en una carpeta diferente fuera de wwwroot de su aplicación también resuelve el problema.