Question

Lors de l'élaboration d'un site sur VS2010 / IIS 7.5, j'utilise Web Deploy pour publier le site de ma machine au serveur de site dev.

Le site a environ 40 répertoires virtuels, et je voudrais créer automagiquement ceux sur le serveur lors du déploiement. Est-il un moyen simple de le faire?

Je songe à écrire une petite application qui charge la liste à partir d'un fichier ou base de données et les créer sur demande. Les répertoires ont des chemins physiques sur ma machine de développement que sur le serveur Web, aussi, qui jette une clé dans les travaux.

Était-ce utile?

La solution

Si vous utilisez MSBuild pour votre web Deploy, vous pouvez écrire un CustomBuildTask en .net que vous pouvez utiliser pour créer votre répertoire virtuel.

Il y a beaucoup de ressources sur la façon de créer et de consommer une tâche de construction personnalisée, mais voici le code que j'utilise pour créer un répertoire virtuel à l'aide d'une tâche de génération personnalisée:

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

Autres conseils

Je l'ai ne se fait programmation personnalisée contre WebDeploy, mais je l'ai vu référence qu'il existe une API pour elle. Je ne peux pas sembler trouver la documentation officielle, mais peut-être ce blog + app échantillon pourrait fournir un début: Web Deploy API Web application

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top