c# - studio - El límite de recompilación de ASP.NET MVC de 15 alcanzó el cierre iniciado por HostingEnvironment. El entorno de alojamiento provocó el cierre.
razor page model (1)
En algún momento, poco después de la inserción de un código, vimos numerosos reinicios en nuestra aplicación web sin registro, lo que indica un problema de ningún tipo. Así que encontré este artículo: http://weblogs.asp.net/scottgu/433194 y agregamos el registro Application_End, que reveló de inmediato esto:
_shutDownMessage = El límite de recompilación de 15 alcanzó el cierre iniciado por HostingEnviron HostingEnvironment provocó el cierre _shutDownStack = en System.Environment.GetStackTrace (Excepción e, Boolean needFileInfo) en System.Environment.get_StackTrace () en System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal () en System .Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand () en System.Web.HttpRuntime.ShutdownAppDomain (String stackTrace) en System.Web.Compilation.DiskBuildResultCache.ShutdownCallBack (estado del objeto) en System.Threading.ExecutionContext.RunInternal (ExecutionContext executionContext, ContextCallback callback , Estado del objeto, Boolean preserveSyncCtx) en System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) en System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () en System.Threading.ThreadPoolWorkQueue .Envío()
Buscar en Google este error revela sorprendentemente poco, por lo que actualizamos nuestra web.config
<compilation debug="false" numRecompilesBeforeAppRestart="100">
y viola! Todo vuelve a la normalidad Revisamos nuestros cambios a fondo, pero no encontramos nada que sintiéramos que podría haber sido el culpable.
¿Alguien más ha encontrado esto o algo similar, o tiene conocimiento / sospechas de lo que en el mundo podría haber causado esto? ¡Cualquier comentario sería excelente!
Por lo tanto, la aplicación se está volviendo a compilar y dado que el límite predeterminado es 15 después de la recopilación de 15, el grupo de aplicación / dominio de aplicaciones se recicla.
Por lo general, verá un evento en el visor de eventos con Id. De evento - 1305. Abra Administrador de IIS => Grupos de aplicaciones => Haga clic con el botón derecho en el grupo de aplicaciones y vaya a configuración avanzada => Desplácese hasta Generar Reciclar entrada de registro de eventos y cambie todo a verdadero. También es posible que deba habilitar la supervisión de estado para ver los detalles en el visor de eventos.
Cuando lo aumentó a 100, no se alcanzó el límite y, por lo tanto, el grupo de aplicaciones se habría reciclado durante el programa de reciclaje regular (predeterminado cada 29 horas)
Una lista de las causas de la recompilación del sitio web completo:
- De forma predeterminada, cuando se realiza un cambio en un archivo de nivel superior en un sitio web, se vuelve a compilar todo el sitio. Los archivos de nivel superior incluyen el archivo global.asax y todos los archivos en el bin / y App_Code / folders. Detalles adicionales aquí - https://blogs.msdn.microsoft.com/tmarq/2007/11/01/asp-net-file-change-notifications-exactly-which-files-and-directories-are-monitored/
- modificando web.config
una configuración incluye cambio de archivo, si la propiedad SectionInformation.RestartOnExternalChanges es verdadera
<section name="MyAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="true" requirePermission="false" />
Notas:
Si desea poder cambiar los archivos de nivel superior sin hacer que se recompile todo el sitio, puede establecer el atributo optimizeCompilations del elemento de compilación en el archivo Web.config en true
Referencias
Comprender las compilaciones dinámicas de ASP.Net
Una de las causas más comunes de recompilación es que un archivo se escribe en la carpeta de código fuente, es decir, algo así como escribir un archivo de registro en la carpeta de código fuente o antivirus tratando de escanear la carpeta de la aplicación web y probablemente escribir algo en ella ( puede excluir la carpeta de la aplicación web del análisis antivirus y ver si ayuda).
Sin embargo, para saber exactamente qué está causando la recompilación, debe capturar una traza ETW y ver. Aquí se brinda una explicación detallada sobre cómo hacerlo - https://blogs.msdn.microsoft.com/tess/2008/11/06/troubleshooting-appdomain-restarts-and-other-issues-with-etw-tracing/
También se menciona un problema conocido sobre esto: http://support.microsoft.com/kb/319947
Texto relevante del enlace
Sin embargo, este problema se produce cuando carga muchos archivos nuevos .aspx o .ascx en el servidor (por ejemplo, 61 archivos). El servidor descarga la aplicación cuando se vuelven a compilar los primeros 15 archivos y cada vez que se vuelven a compilar 15 archivos hasta que el servidor llegue a 61. Esto genera cuatro reinicios de la aplicación, aunque solo se necesita uno.
Habla sobre las implicaciones de la memoria, así que asegúrese de tener activado el reciclaje periódico del grupo de aplicaciones.
Espero que esto ayude