从物理路径中删除文件夹后站点重新启动。在 IIS 10 上

Site restart after removing folders from physical path. on IIS 10

我们在 asp.net 4.7 站点上具有删除包含静态数据 (css, js) 的文件夹并生成包含更新 (js,css) 文件的相同文件夹的功能。使用静态数据删除文件夹后,站点将重新启动。我收到此错误日志:

ApplicationEnd: ShutDownMessage: Directory rename change notification for 'D:\Projects\MySite\src\WebProject'.
WebProject dir change or directory rename
HostingEnvironment initiated shutdown
Directory rename change notification for 'D:\Projects\MySite\src\WebProject'.
WebProject dir change or directory rename
Directory rename change notification for 'D:\Projects\MySite\src\WebProject'.
WebProject dir change or directory rename
HostingEnvironment caused shutdown 
 ShutDownStack:    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
   at System.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand()
   at System.Web.HttpRuntime.ShutdownAppDomain(String stackTrace)
   at System.Web.HttpRuntime.OnCriticalDirectoryChange(Object sender, FileChangeEvent e)
   at System.Web.FileChangesMonitor.OnSubdirChange(Object sender, FileChangeEvent e)
   at System.Web.DirectoryMonitor.FireNotifications()
   at System.Web.Util.WorkItem.CallCallbackWithAssert(WorkItemCallback callback)
   at System.Web.Util.WorkItem.OnQueueUserWorkItemCompletion(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()

IIS (APPPool/site) 中的某些设置在删除此文件夹后不会在站点上创建重新启动。

PS。我已经在 web.config 上研究了 fcnMode="Single" 的解决方案。这不是我们的解决方案。

<httpRuntime executionTimeout="180" targetFramework="4.7.2" requestValidationMode="2.0" maxRequestLength="104857600" fcnMode="Single"/>

这是 IIS 的正常行为。

IIS 会在以下情况下重启应用程序或回收应用程序池: web.config 已编辑

  • 编辑machine.config
  • 编辑global.asax
  • Web 应用程序的 bin 目录或 bin 的子目录之一中的文件已更改
  • 在 Web 应用程序目录中创建、重命名或删除目录
  • ASP.NET 文件(aspx、asmx 等)被编辑(并因此重新编译)超过 20 次,在机器配置中默认设置为名为 numRecompilesBeforeApprestart
  • 的元素
  • 通过machine.config中元素中各种属性的设置,影响worker进程本身的restart/shutdown。

您无法阻止此行为,因为它是设计好的。除非您停止删除文件夹。