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.

È stato utile?

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

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