IIS-deploy - Erstellen virtueller Verzeichnisse?
-
26-09-2019 - |
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.
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