如何在代码后面检查端口当前是否与IIS7(webSite)一起使用?

时间:2013-01-07 10:52:03

标签: c# iis web port servermanager

我开发了一个程序“安装程序”,它将在IIS上添加和配置一个新网站。 我的问题是我想在安装之前检查用户提供的端口是否已被其他站点使用。

我的项目采用C#WinForm风格。 有人有想法吗?

string[] lPorts = System.IO.Ports.SerialPort.GetPortNames(); ?

3 个答案:

答案 0 :(得分:4)

检查一下:

BindingInformation Property:获取或设置当前绑定的绑定信息。

此属性的值是以冒号分隔的字符串,其中包含绑定的IP地址,端口和主机名。您可以将主机名留空。您可以将IP地址设置为“*”以指示绑定适用于所有变量。

例如,为端口80上的所有IP地址设置并且没有指定主机名的绑定将从此属性返回“:80:”。在端口8080上为IP地址192.168.1.150设置的绑定将返回“192.168.1.150:8080:”。为端口80上的所有IP地址设置的绑定为名为“microsoft.com”的主机返回“:80:microsoft.com”。

BindingInformation属性值在ApplicationHost.config文件中维护。

另外,您可以查看以下内容: Get IIS bindings at runtime

foreach (Microsoft.Web.Administration.ConfigurationElement binding in mySite.GetCollection("bindings"))
        {
            string protocol = (string)binding["protocol"];
            string bindingInfo = (string)binding["bindingInformation"];

            if (protocol.StartsWith("http", StringComparison.OrdinalIgnoreCase))
            {
                string[] parts = bindingInfo.Split(':');
                if (parts.Length == 3)
                {
                    //Get the port in use HERE !!!
                    string port = parts[1];
                    yield return new KeyValuePair<string, string>(protocol, port);
                }
            }
        }

答案 1 :(得分:1)

你应该看看 Microsoft.Web.Administration命名空间

您应该使用ServerManager.Sites来获取网站列表。看看每个网站上的Bindings集合。每个站点可以具有一个或多个绑定,即可以通过一个或多个地址/端口访问它。

上面的代码查找在usb之前用于连接调制解调器和打印机的物理串行端口。

希望这有帮助!

答案 2 :(得分:0)

不确定您是否在寻找C#,但如果您需要PowerShell,请转到..

打开PowerShell并输入以下内容:   进口模块网络管理   得到-webbinding