IIS 8.5 перезапускается при добавлении новых привязок

Я пытаюсь добавить привязку к IIS 8.5 с помощью класса ServerManager, но это всегда приводит к перезапуску приложения. Сайт работает на IIS 8.5, ASP.NET 4.5 и настроен для работы в интегрированном режиме. Раньше, когда моя машина разработчика работала под управлением Windows 7, а мы использовали Asp.Net 3.5, этого не происходило. Я хочу иметь возможность добавлять новые привязки без перезапуска приложения. Вот часть кода. Перезапуск происходит при вызове метода CommitChanges(), но без него привязки не добавляются. Говорят, что перезапуск происходит из-за изменения конфигурации, но у меня в AppPool «Отключить перезапуск для изменения конфигурации» установлено значение «Истина», что, как я надеялся, предотвратит такое поведение.


Регистрация трассировки стека из Global.Application_End() говорит мне следующее:

_shutDownMessage=Изменение конфигурации IIS HostingEnvironment инициировало отключение HostingEnvironment вызвало отключение

_shutDownStack= в System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) в System.Environment.get_StackTrace() в System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal() в System.Web.Hosting.PipelineRuntime.StopProcessing()


using (ServerManager mgr = new ServerManager())
{
   foreach (var site in mgr.Sites)
   {
      if (Convert.ToString(site.Name.ToLowerInvariant()) == siteName)
      {
         bool bindingExists = false;
         foreach (var binding1 in site.Bindings)
         {
            if (binding1.Host == domainName &&
                 Convert.ToString(binding1.EndPoint.Port) == portNo)
            {
                 bindingExists = true;
                 result = true;
                 break;
            }
         }
         if (!bindingExists)
         {
            string bind = "*:" + portNo + ":" + domainName;
            Binding binding = site.Bindings.CreateElement();
            binding.Protocol = "http";
            binding.BindingInformation = bind;
            site.Bindings.Add(binding);
            mgr.CommitChanges();
            result = true;
         }
         break;
      }
   }

}

person Alienheart    schedule 15.11.2013    source источник


Ответы (1)


Привязки сайта хранятся в \Windows\System32\InetSrv\Config\applicationHost.config. Изменения в этом файле влияют на IIS глобально — настройки пула приложений не имеют значения.

Насколько я знаю, нет способа предотвратить повторный запуск IIS вашего пула приложений при изменении параметра на уровне сайта. На самом деле в applicationHost.config есть множество настроек, которые могут привести к перезапуску пула приложений.

Это просто природа вещей.

person Richard Hauer    schedule 12.06.2015