Ada*_*m K 7 c# asp.net iis asp.net-mvc
在某些时候,在代码推送后不久,我们看到我们的Web应用程序中发生了大量重启,没有任何记录表明存在任何问题.所以我发现这篇文章:http://weblogs.asp.net/scottgu/433194并且我们添加了Application_End日志记录,它立即显示了这个:
_shutDownMessage = 15重新编译极限达到HostingEnvironment启动的关闭HostingEnvironment在系统停机引起= _shutDownStack在System.Environment.GetStackTrace(例外五,布尔needFileInfo)在System.Environment.get_StackTrace()在System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()位于System.Web.Comp.D.P.ThutdownCallBack(对象状态)的System.Web.HttpRuntime.ShutdownAppDomain(String stackTrace)中的.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand(),System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback callback) ,对象的状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回调,对象的状态,布尔preserveSyncCtx)在System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()在System.Threading.ThreadPoolWorkQueue .调度()
谷歌搜索这个错误显示很少,所以我们更新了我们的web.config
<compilation debug="false" numRecompilesBeforeAppRestart="100">
Run Code Online (Sandbox Code Playgroud)
和中提琴!一切恢复正常.我们彻底审查了我们的变化,但没有找到任何我们认为可能是罪魁祸首的事情.
有没有其他人遇到这个或类似的,或者对世界上有什么可能导致这种情况的知识/怀疑?任何反馈都会很棒!
因此,应用程序实际上正在重新编译,并且由于重新编译后15 的默认限制是应用程序域/应用程序池的回收.
通常,您将在事件查看器中看到事件ID为-1305的事件.打开IIS管理器=>应用程序池=>右键单击应用程序池并转到高级设置=>向下滚动以生成回收事件日志条目并将所有内容更改为true.此外,您可能需要启用运行状况监视才能在事件查看器中查看详细信息.
当您将其增加到100时,未达到限制,因此应用程序池将在常规回收计划期间进行重新计划(默认情况下每29小时)
导致整个网站重新编译的原因列表:
如果SectionInformation.RestartOnExternalChanges属性为true ,则配置包括文件更改
<section name="MyAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="true" requirePermission="false" />
笔记:
如果您希望能够在不导致重新编译整个站点的情况下更改顶级文件,则可以将Web.config文件中编译元素的optimizeCompilations属性设置为true
参考文献:
重新编译的另一个常见原因是由于文件被写入源代码文件夹,例如在源代码文件夹中编写日志文件或反病毒试图扫描Web应用程序文件夹并可能在其中写入内容(您可以从反病毒扫描中排除Web应用程序文件夹并查看它是否有帮助).
但是,要准确找出导致重新编译的原因,您需要捕获ETW跟踪并查看.这里给出了如何做的详细解释 - https://blogs.msdn.microsoft.com/tess/2008/11/06/troubleshooting-appdomain-restarts-and-other-issues-with-etw-tracing/
此处还提到了一个已知问题 - http://support.microsoft.com/kb/319947
链接中的相关文字
但是,当您将许多新的.aspx或.ascx文件加载到服务器(例如,61个文件)时,会发生此问题.服务器在重新编译前15个文件时卸载应用程序,每次重新编译另外15个文件,直到服务器达到61.这导致四个应用程序重新启动,即使只需要一个.
它讨论了内存含义,因此请确保您已启用定期应用程序池回收.
希望这可以帮助