Frage

Ich möchte eine Admin-Seite einrichten (ASP.NET/C#), die IIS-Host-Header auf der Website hinzufügen können, die Admin-Seite gehostet wird, auf. Ist das möglich?

Ich möchte nicht einen HTTP-Header hinzufügen - ich die Aktion des Gehens in IIS mimick wollen manuell, um die Eigenschaften der Webseite Erziehung, auf der Website Registerkarte Erweitert klicken, und in der erweiterten Website Identifizierung Bildschirm und eine neue " Identität“mit Host-Header-Wert, IP-Adresse und tCP-Port.

War es hilfreich?

Lösung

Hier ist ein Forum auf eine andere Identität zu einer Website Programmatically RSS Hinzufügen

Auch hier ist ein Artikel, wie man einen Host-Header von Code anhängen in IIS :

  

Das folgende Beispiel fügt einen Host-Header auf eine Website in IIS. Dies beinhaltet die Serverbindings Eigenschaft zu ändern. Es gibt keine Append-Methode, die verwendet werden können, eine neue serverbinding zu dieser Immobilie anzuhängen, so was muss getan werden, um die gesamte Eigenschaft lesen und dann wieder hinzufügen zurück, zusammen mit den neuen Daten. Dies ist, was in dem unten stehenden Code erfolgt. Die Datentyp der Serverbindings Eigenschaft ist MultiSZ, und das String-Format IP: Port:. Hostname

     

Beachten Sie, dass dieser Beispielcode keine Fehlerprüfung macht. Es ist wichtig, dass jeder Serverbindings Eintrag eindeutig zuzuordnen sind, und Sie - der Programmierer -. Ist verantwortlich für die Überprüfung dieser (was bedeutet, dass Sie eine Schleife durch alle Einträge müssen und prüfen, ob was ist einzigartig hinzugefügt werden soll)

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

Aber ich bin nicht sicher, wie durch den Header-Wert in einer Schleife um den Fehler zu tun, erwähnt zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top