2013-11-15 47 views
2

我正在嘗試使用ServerManager類向IIS 8.5添加綁定,但它總是導致應用程序重新啓動。該網站運行在IIS 8.5上,運行ASP.NET 4.5並配置爲以集成模式運行。以前,當我的開發者機器運行Windows 7並且我們使用Asp.Net 3.5時,這並沒有發生。我希望能夠在不重新啓動應用程序的情況下添加新的綁定。這是代碼的一部分。當調用CommitChanges()方法時發生回收,但沒有它時不會添加綁定。 回收據說是因爲配置發生變化,但我將AppPool的「禁用回收配置更改」設置爲True,我希望這可以防止此行爲。添加新綁定時IIS 8.5會回收


記錄從Global.Application_End()堆棧跟蹤告訴我這一點:

_shutDownMessage = IIS配置變化HostingEnvironment啓動的關機HostingEnvironment在System.Environment.GetStackTrace造成停機

_shutDownStack =(例外e,布爾needFileInfo)在System.Environment.get_StackTrace() System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal() System.Web.Hosting.PipelineRuntime.StopPr ocessing()


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; 
     } 
    } 

} 

回答

0

站點綁定被存儲在\Windows\System32\InetSrv\Config\applicationHost.config。此文件的更改會影響全局IIS - 應用程序池設置不相關。

AFAIK當您更改站點級設置時,無法阻止IIS回收您的應用程序池。實際上在applicationHost.config中有許多設置可能會導致您的應用程序池回收。

這只是事物的本質。