我正在嘗試使用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;
}
}
}