2017-01-12 6 views
4

Мое предустановленное веб-приложение Azure постоянно перезагружается, и я не могу понять, как его исправить.Почему компиляция страницы MVC заставляет постоянное приложение перезапускаться на моем веб-приложении Azure?

Вот подробности:

  • Это веб-проект MVC 5 опубликован как Azure веб-приложение
  • .Net Framework v4.5.2
  • Причиной перезапуска является "BinDirChangeOrDirectoryRename" с этим сообщение: «Изменить уведомление для критических каталогов. bin dir change or directory rename»
  • Я добавил FileSystemWatcher, чтобы выяснить, какие файлы меняются, и всегда такие файлы, как «bin \ App_Web_h2quortx.dll» и «bin \ dailyentry». cshtml.c45ee28a.compiled "
  • При публикации настроек, я выбрал «PreCompile при публикации» вариант, который я думал бы предотвратить страницы из компилируется
  • в конфигурации прекомпиляции, я пробовал различные варианты, но ничего не работает до сих пор
  • Такое поведение происходит не сразу после публикации . Похоже, что это не отображается, пока приложение не было посещено после тайм-аута приложения
  • Restarts происходит практически с любым видом страницы, в первый раз страницы просматривается после применения перезапускает

Вашей помощи очень ценится. Спасибо!

+0

Вы проверили время ожидания простоя вашего пула приложений? Если в течение определенного периода времени нет запроса, пул переходит в режим ожидания, а затем перезапускается, когда приходит какой-либо запрос. – Fals

+0

Спасибо за ваш ответ, но проблема заключается не в том, что пул приложений отключен. Проблема заключается в том, что после перезапуска после таймаута она снова динамически компилирует страницы, что приводит к немедленному перезапуску приложения. Этого не должно быть, потому что его следовало предварительно скомпилировать. –

+0

Есть ли несколько сайтов на одном сервере? у вас есть антивирус, установленный на сервере? ваши представления динамически генерируются? –

ответ

2

хотя после многих попыток я не смог воспроизвести ту же самую ошибку на моей машине dev.

Как caue для вашей ошибки кажется, изменяя файлы и File Change Notifications

  1. Убедитесь, что нет ничего в вашем App_Start код, который меняется ESSENTIALS файлы на веб-приложения. Как WebConfig, App_Data и т.д.

  2. Попробуйте отключить файл Изменить Уведомления

    <httpRuntime fcnMode="Disabled" /> 
    

Эта недвижимость находится под Конфигурация-> system.web

** - Пожалуйста, обратите внимание, что по какой-то причине Я не могу полностью ввести разметку XML здесь, в поле ответа.

+0

Спасибо за ваш ответ, я также прочитал о fcnMode = «Отключен», для меня это звучит как взлом?! => Интересно, я не могу подтвердить, что нашел файлы, которые были изменены после публикации. Я протестировал это с помощью: var path = Path.Combine (AppDomain.CurrentDomain.BaseDirectory, "bin"); var dirInfo = new DirectoryInfo (путь); FileInfo [] files = dirInfo.GetFiles(). OrderByDescending (p => p.LastWriteTime) .Take (3) .ToArray(); –

+0

(в app_data ничего нет, мы только читаем значения из web.config) –

+0

пытается отключить режим fcn. если это решает вашу проблему, мы, по крайней мере, на шаг ближе к распознаванию проблемы –

0

==> Предоставление дополнительных информаций:

Журнал: Уведомление об изменении критических каталогов. bin dir change или переименовать каталог HostingEnvironment инициирует выключение Уведомление об изменении для критических каталогов. bin dir change or directory rename Измените уведомление для критических каталогов.бен изменить реж или каталог переименования HostingEnvironment вызвало отключение

Чтобы получить «эмитент» я написал в Application_End следующее:

var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"); 
     var dirInfo = new DirectoryInfo(path); 
     FileInfo[] files = dirInfo.GetFiles().OrderByDescending(p => p.LastWriteTime).Take(3).ToArray(); 
     foreach (var item in files) 
     { 
      Log.Info("FILE: " + item.FullName + " | " + item.LastWriteTime); 
     } 

** LastWriteTime всегда в тот же день, так что я могу **» т подтверждение есть любая модификация ****

Я также войти в StackTrace:!?

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.OnCriticaldirChange(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.QueueUserWorkItemCallback.WaitCallback_Context(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() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 

Edit: Спасибо за ваш комментарий, я изменил код в app_end на:

var dirInfo = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); 
     FileInfo[] files = dirInfo.GetFiles("*.*", SearchOption.AllDirectories).OrderByDescending(p => p.LastWriteTime).Take(3).ToArray(); 
     foreach (var item in files) 
     { 
      Log.Info("FILE: " + item.FullName + " | " + item.LastWriteTime); 
     } 

Он отображает всегда одни и те же 3 * .compiled файлы, но LastWriteTime будет равна дате публикации, так что является причиной " bin dir change или directory rename "?

+1

, пожалуйста, добавьте это в свой вопрос, вместо того чтобы добавить ответ –

+0

это не мой вопрос :(, такая же проблема. –

+0

домен приложения также может перезапускаться из любого файла изменение для некоторых папок даже вне bin. –

 Смежные вопросы

  • Нет связанных вопросов^_^