IIS Web Deploy - creare le directory virtuali?
-
26-09-2019 - |
Domanda
Quando si sviluppa un sito su VS2010 / IIS 7.5, sto usando Web Deploy per pubblicare il sito dalla mia macchina al server del sito dev.
Il sito ha circa 40 directory virtuali, e mi piacerebbe creare automagically quelli sul server durante la distribuzione. C'è un modo semplice per fare questo?
Sto pensando di scrivere una piccola applicazione che caricare l'elenco da un file o database e creare su richiesta. Le directory hanno differenti percorsi fisici sulla mia macchina di sviluppo che sul server web, anche, che getta una chiave nelle opere.
Soluzione
Se stai usando MSBuild per il vostro Web Deploy è possibile scrivere una CustomBuildTask in .NET che è possibile utilizzare per creare la directory virtuale.
Ci sono un sacco di risorse su come creare e consumare un compito di generazione personalizzata, ma qui è il codice che uso per creare una directory virtuale utilizzando un compito di generazione personalizzata:
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();
}
Altri suggerimenti
Non ho fatto alcuna programmazione personalizzata contro WebDeploy, ma ho visto di riferimento che v'è un'API per esso. Io non riesco a trovare documentazione ufficiale su di esso, ma forse questo blog + app campione potrebbe fornire un nuovo inizio: Web Deploy API Web Application