Random site restarts coming from config changes in IIS?

We have been seeing random sites restarts with the app domain, no app pool recycle and finally got more information below. It looks like something is touching the config file on our IIS site cause the app domain restart.

Is there a way to determine what is touching this file last? Is this touching the web.config or something else?

_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.Configuration.HttpConfigurationSystem.OnConfigurationChanged(Object sender, InternalConfigEventArgs e)
   at System.Configuration.Internal.InternalConfigRoot.OnConfigChanged(InternalConfigEventArgs e)
   at System.Configuration.BaseConfigurationRecord.OnStreamChanged(String streamname)
   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()

_shutDownMessage

ConfigurationChange

_shutDownReason

CONFIG change HostingEnvironment initiated shutdown

Global.asax

protected void Application_End()
        {
            NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

            HttpRuntime runtime = (HttpRuntime)typeof(HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null);

            if (runtime != null)
            {
                var bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField;
                string shutDownMessage = (string)runtime.GetType().InvokeMember("_shutDownStack", bindingFlags, null, runtime, null);
                string shutDownStack = (string)runtime.GetType().InvokeMember("_shutDownMessage", bindingFlags, null, runtime, null);
                string shutDownReason = runtime.GetType().GetField("_shutdownReason", bindingFlags).GetValue(runtime).ToString();

                logger.Error(shutDownMessage);
                logger.Error(shutDownStack);
                logger.Error(shutDownReason);
            }
        }
How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum