Добавление заголовка узла IIS на веб-сайт программным способом - PullRequest
5 голосов
/ 10 октября 2008

Я хотел бы настроить страницу администратора (ASP.NET/C#), которая может добавлять заголовки узлов IIS к веб-сайту, на котором размещена страница администратора. Это возможно?

Я не хочу добавлять http-заголовок - я хочу имитировать действие: войти в IIS вручную, вызвать свойства веб-сайта, нажать кнопку «Дополнительно» на вкладке веб-сайта, а также на экране расширенной идентификации веб-сайта и новый » идентичность »со значением заголовка узла, IP-адресом и портом TCP.

1 Ответ

2 голосов
/ 10 октября 2008

Вот форум на Добавление другой идентификационной информации на сайт программным путем RSS

Кроме того, вот статья о том, как добавить заголовок узла по коду в IIS :

В следующем примере заголовок узла добавляется на веб-сайт в IIS. Это включает в себя изменение свойства ServerBindings. Не существует метода Append, который можно использовать для добавления новой привязки сервера к этому свойству, поэтому необходимо прочитать все свойство, а затем снова добавить его вместе с новыми данными. Это то, что сделано в коде ниже. Тип данных свойства ServerBindings - MULTISZ, а формат строки - IP: Порт: Имя хоста.

Обратите внимание, что этот пример кода не выполняет никакой проверки ошибок. Важно, чтобы каждая запись ServerBindings была уникальной, и вы - программист - несете ответственность за проверку этого (что означает, что вам нужно пройтись по всем записям и проверить, является ли то, что должно быть добавлено, уникальным).

using System.DirectoryServices;
using System;

public class IISAdmin
{
    /// <summary>
    /// Adds a host header value to a specified website. WARNING: NO ERROR CHECKING IS PERFORMED IN THIS EXAMPLE. 
    /// YOU ARE RESPONSIBLE FOR THAT EVERY ENTRY IS UNIQUE
    /// </summary>
    /// <param name="hostHeader">The host header. Must be in the form IP:Port:Hostname </param>
    /// <param name="websiteID">The ID of the website the host header should be added to </param>
    public static void AddHostHeader(string hostHeader, string websiteID)
    {

        DirectoryEntry site = new DirectoryEntry("IIS://localhost/w3svc/" + websiteID );
        try
        {                        
            //Get everything currently in the serverbindings propery. 
            PropertyValueCollection serverBindings = site.Properties["ServerBindings"];

            //Add the new binding
            serverBindings.Add(hostHeader);

            //Create an object array and copy the content to this array
            Object [] newList = new Object[serverBindings.Count];
            serverBindings.CopyTo(newList, 0);

            //Write to metabase
            site.Properties["ServerBindings"].Value = newList;            

            //Commit the changes
            site.CommitChanges();

        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

    }
}

public class TestApp
{
    public static void Main(string[] args)
    {
        IISAdmin.AddHostHeader(":80:test.com", "1");
    }
}

Но я не уверен, как перебрать значения заголовков, чтобы выполнить упомянутую проверку ошибок.

...