IIS 7.0与7.5网站Microsoft.Web.Administration.Site BindingCollection的区别

5
我已经编写了一个程序,它接受主机名列表和站点名称,并将它们添加为网站的绑定,如果它们在任何站点上不存在。该程序是用.NET 4.0 C#编写的。
在本地(IIS 7.5,Win 7)下面的代码可以正常工作。它检测到绑定并退出。但在我的服务器上(IIS 7.0,Win Server 2008),检查失败并且绑定总是被添加。这是怎么回事?
是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();
1个回答

7
记录一下,我已经找到了我的错误。默认情况下,通过IIS管理控制台添加的站点绑定,如果“IP地址:”设置为 All Unassigned,则会给出此绑定字符串:

"*:80:some.domain.com"

我在我的代码中使用了这个:

":80:some.domain.com" //注意缺少通配符

绑定工作正常,但是通过管理器设置的任何绑定都不会被我的LINQ查询记录为与主机名绑定信息的没有通配符版本相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接