Pregunta

Me gustaría configurar una página de administración (ASP.NET/C#) que pueda agregar encabezados de host IIS al sitio web en el que está alojada la página de administración. es posible?

No quiero agregar un encabezado http: quiero imitar la acción de ingresar a IIS manualmente, mostrar las propiedades del sitio web, hacer clic en avanzado en la pestaña del sitio web y en la pantalla de identificación avanzada del sitio web y un nuevo " ; identidad " con valor de encabezado de host, dirección IP y puerto tcp.

¿Fue útil?

Solución

Aquí hay un foro en Agregar otra identidad a un sitio mediante programación RSS

Además, aquí hay un artículo sobre cómo Agregar un encabezado de host por código en IIS :

  

El siguiente ejemplo agrega un encabezado de host a un sitio web en IIS. Esto implica cambiar la propiedad ServerBindings. No existe un método Append que pueda usarse para agregar un nuevo enlace de servidor a esta propiedad, por lo que lo que debe hacerse es leer toda la propiedad y luego agregarla nuevamente, junto con los nuevos datos. Esto es lo que se hace en el siguiente código. El tipo de datos de la propiedad ServerBindings es MULTISZ y el formato de cadena es IP: Puerto: Nombre de host.

     

Tenga en cuenta que este código de ejemplo no realiza ninguna comprobación de errores. Es importante que cada entrada de ServerBindings sea única, y usted, el programador, es responsable de verificar esto (lo que significa que debe recorrer todas las entradas y verificar si lo que se va a agregar es único).

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");
    }
}

Pero no estoy seguro de cómo recorrer los valores del encabezado para realizar la comprobación de errores mencionada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top