C# IIS 7.0 vs 7.5站点Microsoft.Web.Administration.Site BindingCollection
我编写了一个程序,它接受主机名和站点名的列表,并将它们作为绑定添加到站点(如果它们在任何站点上都不存在)。该程序是用.NET4.0C#编写的 在本地(iis7.5,win7),下面的代码运行良好。它检测绑定并退出。在我的服务器(IIS 7.0,Win server 2008)上,检查失败,并且始终添加绑定。有什么好处 是LINQ查询错误,还是Microsoft.Web.Administration库在处理IIS 7.0时存在一些根本性的不足 以下是在两台机器上都可以使用的部分代码:C# IIS 7.0 vs 7.5站点Microsoft.Web.Administration.Site BindingCollection,c#,.net,linq,iis-7,iis-7.5,C#,.net,Linq,Iis 7,Iis 7.5,我编写了一个程序,它接受主机名和站点名的列表,并将它们作为绑定添加到站点(如果它们在任何站点上都不存在)。该程序是用.NET4.0C#编写的 在本地(iis7.5,win7),下面的代码运行良好。它检测绑定并退出。在我的服务器(IIS 7.0,Win server 2008)上,检查失败,并且始终添加绑定。有什么好处 是LINQ查询错误,还是Microsoft.Web.Administration库在处理IIS 7.0时存在一些根本性的不足 以下是在两台机器上都可以使用的部分代码: Server
ServerManager oIisMgr = new ServerManager();
Site oSite = oIisMgr.Sites[siteName];
string sBindInfo = ":80:" + this.StripUrl(hostName);
//See if this binding is already on some site
if (oIisMgr.Sites
.Where(ST => ST.Bindings.Where(B => B.BindingInformation == sBindInfo).Any())
.Any()) return true;
Binding oBinding = oSite.Bindings.CreateElement();
oBinding.Protocol = "http";
oBinding.BindingInformation = sBindInfo;
oSite.Bindings.Add(oBinding);
oIisMgr.CommitChanges();
为了记录在案,我发现了我的bug是什么。默认情况下,通过IIS管理控制台添加的、将“IP地址:”设置为所有未分配的的站点绑定都具有以下绑定字符串: “*:80:some.domain.com” 我在代码中使用了这个: “:80:some.domain.com”//请注意缺少的通配符 绑定可以工作,但是通过管理器设置的任何绑定都不会被我的LINQ查询记录为完全相同,因为我查询的是主机名绑定信息的无通配符版本