Domanda

Vorrei impostare una pagina di amministrazione (ASP.NET/C#) in grado di aggiungere intestazioni host IIS al sito Web su cui è ospitata la pagina di amministrazione. È possibile?

Non voglio aggiungere un'intestazione http: voglio imitare l'azione di accedere a IIS manualmente, visualizzare le proprietà del sito Web, fare clic su Avanzate nella scheda Sito Web e nella schermata di identificazione avanzata del sito Web e un nuovo " ; identità " con valore di intestazione host, indirizzo IP e porta tcp.

È stato utile?

Soluzione

Ecco un forum su Aggiunta di un'altra identità a un sito a livello di codice RSS

Inoltre, ecco un articolo su come Aggiungi un'intestazione host per codice in IIS :

  

L'esempio seguente aggiunge un'intestazione host a un sito Web in IIS. Ciò comporta la modifica della proprietà ServerBindings. Non esiste un metodo Append che può essere utilizzato per aggiungere un nuovo server binding a questa proprietà, quindi ciò che deve essere fatto è leggere l'intera proprietà e quindi aggiungerla nuovamente, insieme ai nuovi dati. Questo è ciò che viene fatto nel codice seguente. Il tipo di dati della proprietà ServerBindings è MULTISZ e il formato stringa è IP: Porta: Nome host.

     

Si noti che questo codice di esempio non esegue alcun controllo degli errori. È importante che ogni voce ServerBindings sia unica e tu, il programmatore, sei responsabile di controllarla (il che significa che devi passare attraverso tutte le voci e controllare se ciò che sta per essere aggiunto è unico).

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

Ma non sono sicuro di come passare in rassegna i valori dell'intestazione per eseguire il controllo degli errori menzionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top