Получение привязок IIS во время выполнения

Интересно, как получить параметры привязки IIS текущего сайта (имя хоста, порт, IP-адрес) во время выполнения с помощью ASP.NET. Предоставляет ли .NET какой-либо способ получить эту информацию?

Изменить: мне нужен способ настроить порт http и https для перенаправления на правый порт при переключении с http на https и обратно с https на http, если используются другие порты, тогда 80/443. Есть ли способ сделать это без расширенных привилегий?

Привет

Ответы

Ответ 1

Единственный способ добиться этого (без администратора) - использовать Microsoft.Web.Administration. Я просто написал быстрый блог о том, как это сделать, см.:
http://blogs.msdn.com/b/carlosag/archive/2011/01/21/get-iis-bindings-at-runtime-without-being-an-administrator.aspx

В принципе, поскольку IIS имеет функцию, которую мы называем изоляцией Worker Process, можно прочитать конфигурацию из самого приложения без необходимости быть администратором. Если вы используете ADSI, Metabase или любым другим способом, вам потребуется быть администратором.

Ответ 2

Вы должны выполнить это, обратившись к метабазе IIS, используя сборку System.DirectoryServices.

Например, здесь вы можете перечислить все ваши сайты и конфигурации свойств, содержащиеся на этих сайтах.

Добавьте ссылку на свой проект:

using System.DirectoryServices

// Assuming your Server Id is 1, and you are connecting to your local IIS.
DirectoryEntry de = new DirectoryEntry(@"IIS://localhost/W3SVC/1/Root");
foreach (DirectoryEntry entry in de.Children)
{
   foreach (PropertyValueCollection property in entry.Properties)
   {
      Console.WriteLine("Name: {0}, Value {1}",property.PropertyName, property.Value);
   }
}