我编写了一个程序,该程序接受主机名和站点名称的列表,并将它们添加为站点的绑定(bind)(如果它们在任何站点上均不存在)。该程序是用.NET 4.0 C#编写的。

在本地(IIS 7.5,Win 7),下面的代码可以正常工作。它检测绑定(bind)并退出。在我的服务器(IIS 7.0,Win Server 2008)上,检查失败,并且始终添加绑定(bind)。是什么赋予了?

是LINQ查询错误还是Microsoft.Web.Administration库在处理IIS 7.0方面存在一些根本性的不足?

这是应该在两台计算机上都可以使用的部分代码:

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();

最佳答案

作为记录,我发现了我的错误。默认情况下,通过IIS管理控制台添加的将“IP地址:”设置为的网站绑定(bind)赋予此绑定(bind)字符串:所有未分配的

“*:80:some.domain.com”

我在代码中使用了这个:

“:80:some.domain.com”//注意缺少的通配符

绑定(bind)有效,但是由于我正在查询主机名绑定(bind)信息的无通配符版本,因此我的LINQ查询未将通过管理器设置的绑定(bind)记录为完全相同。

10-01 23:15