Frage

Wenn Sie eine Website auf VS2010 Entwicklung / IIS 7.5, ich bin mit Web Deploy der Seite von meiner Maschine an den Entwickler-Website-Server zu veröffentlichen.

Die Seite hat etwa 40 virtuelle Verzeichnisse, und ich möchte automagically während des Einsatzes die auf dem Server erstellen. Gibt es eine einfache Möglichkeit, dies zu tun?

Ich erwäge eine kleine App zu schreiben, die eine Liste aus einer Datei oder Datenbank geladen werden würde, und erstellen Sie sich auf Anfrage. Die Verzeichnisse haben unterschiedliche physische Pfade auf meinem Entwicklungscomputer als auf dem Web-Server, auch, die einen Schraubenschlüssel in die Werke werfen.

War es hilfreich?

Lösung

Wenn Sie mit MSBuild für Ihre Web-deploy Sie eine CustomBuildTask in .net schreiben können, dass Sie verwenden können, um das virtuelle Verzeichnis zu erstellen.

Es gibt eine Menge von Ressourcen auf, wie eine benutzerdefinierten Build-Task zu erstellen und zu konsumieren, aber hier ist der Code, den ich verwende, um ein virtuelles Verzeichnis mit einer benutzerdefinierten Build-Task zu erstellen:

public void CreateVirtualDirectory()
{

    DirectoryEntry oDE = new DirectoryEntry("IIS://" +
            this._strServerName + "/W3SVC/" + _webSiteID + "/Root");


    //Get Default Web Site
    DirectoryEntries oDC = oDE.Children;

    //Add row to schema
    DirectoryEntry oVirDir = oDC.Add(this._strVDirName,
                oDE.SchemaClassName.ToString());

    //Commit changes for Schema class File
    oVirDir.CommitChanges();


    //Set virtual directory to physical path
    oVirDir.Properties["Path"].Value = this._strPhysicalPath;

    //Set read access
    oVirDir.Properties["AccessRead"][0] = true;

    //Set the default docs
    oVirDir.Properties["EnableDefaultDoc"][0] = true;
    oVirDir.Properties["DefaultDoc"][0] = "default.aspx";

    //set the name
    oVirDir.Properties["AppFriendlyName"][0] = this._strVDirName;

    //do it
    oVirDir.Invoke("AppCreate", true);


    //set the application pool
    if (!string.IsNullOrEmpty(_strApplicationPool))
    {
        object[] param = { 0, _strApplicationPool, true };
        oVirDir.Invoke("AppCreate3", param);
        oVirDir.Properties["AppIsolated"][0] = "2";
    }

    //Save all the changes
    oVirDir.CommitChanges();
}

Andere Tipps

Ich habe keine individuelle Programmierung gegen WebDeploy getan, aber ich habe Referenz gesehen, dass es eine API für es ist. Ich kann nicht scheinen offizielle Dokumentation drauf, aber vielleicht diesen Blog + Beispiel-App könnte bietet einen Anfang zu finden: Web Deploy API Web Application

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