Как проверить, используется ли порт с IIS7 (веб-сайт) в коде позади?
Я разработал программу "Установщик", которая добавит и настроит новый сайт на IIS. Моя проблема заключается в том, что перед установкой я хочу проверить, используется ли указанный пользователем порт другим сайтом.
Мой проект в стиле C # WinForm. У кого-то есть идея?
string[] lPorts = System.IO.Ports.SerialPort.GetPortNames(); ?
3 ответа
Проверь это:
Свойство BindingInformation: Получает или задает информацию о привязке для текущей привязки.
Значением этого свойства является строка, разделенная двоеточием, которая включает IP-адрес, порт и имя хоста привязки. Вы можете оставить имя хоста пустым. Вы можете установить IP-адрес на "*", чтобы указать, что привязка работает для всех переменных.
Например, привязка, которая установлена для всех IP-адресов на порту 80 и не имеет указанного имени хоста, возвращает " : 80:" из этого свойства. Привязка, которая установлена для IP-адреса 192.168.1.150 на порту 8080, возвращает "192.168.1.150:8080:". Привязка, которая установлена для всех IP-адресов на порте 80 для хоста с именем "microsoft.com", возвращает ": 80: microsoft.com".
Значения свойства BindingInformation хранятся в файле ApplicationHost.config.
Кроме того, вы можете проверить это: Получить привязки IIS во время выполнения
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);
}
}
}
Вы должны посмотреть в пространство имен Microsoft.Web.Administration
Вы должны использовать ServerManager.Sites
чтобы получить список сайтов. Взгляните на коллекцию Bindings на каждом сайте. Каждый сайт может иметь одну или несколько привязок, то есть к нему можно получить доступ через один или несколько адресов / портов.
Ваш код выше ищет физические последовательные порты, которые использовались до usb для подключения модемов и принтеров.
Надеюсь это поможет!
Не уверен, что вы ищете C#, но если вам нужен PowerShell, вы идете..
Откройте PowerShell и введите следующее: веб-администрирование модуля импорта get-webbinding