3

我正在尝试使用 ServerManager 类添加到 IIS 8.5 的绑定,但它总是会导致应用程序重新启动。该站点在 IIS 8.5 上运行,运行 ASP.NET 4.5 并配置为在集成模式下运行。以前,当我的开发人员机器运行 Windows 7 并且我们使用 Asp.Net 3.5 时,这并没有发生。我希望能够在不重新启动应用程序的情况下添加新绑定。这是代码的一部分。调用 CommitChanges() 方法时会发生回收,但如果没有它,则不会添加绑定。据说回收是因为配置更改,但我将 AppPool 的“禁用配置更改回收”设置为 True,我希望这可以防止这种行为。


从 Global.Application_End() 记录堆栈跟踪告诉我:

_shutDownMessage=IIS 配置更改 HostingEnvironment 发起关闭 HostingEnvironment 导致关闭

_shutDownStack= at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal() at 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;
      }
   }

}
4

1 回答 1

1

站点绑定存储在\Windows\System32\InetSrv\Config\applicationHost.config. 对此文件的更改会全局影响 IIS - 应用程序池设置不相关。

AFAIK 当您更改站点级设置时,无法阻止 IIS 回收您的应用程序池。事实上,applicationHost.config 中有许多设置可能会导致您的应用程序池回收。

这只是事物的本质。

于 2015-06-12T23:54:20.860 回答