Agregue un encabezado de host IIS al sitio web mediante programación
-
06-07-2019 - |
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.
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.