2008-10-10 2 views
4

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

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

+0

Я хотел бы знать, как это сделать, чтобы пользователи могли указать свои собственные домены в моей системе. – Ben 2009-01-20 09:21:10

ответ

2

Вот форум по Adding Another Identity To A Site Programmatically RSS

Кроме того, вот статья о том, как Append a host header by code in IIS:

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

Обратите внимание, что этот пример кода не выполняет проверку ошибок. Важно, чтобы каждая запись 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"); 
    } 
} 

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