Pregunta

En el desarrollo de un sitio en VS2010 / IIS 7.5, estoy usando Web Deploy para publicar el sitio de mi máquina al servidor del sitio prog.

El sitio tiene alrededor de 40 directorios virtuales, y me gustaría crear automagicamente los del servidor durante el despliegue. ¿Hay una manera simple de hacer esto?

Estoy pensando en escribir una pequeña aplicación que cargar la lista de un archivo o base de datos y les crear bajo demanda. Los directorios tienen diferentes rutas físicas en mi máquina de desarrollo que en el servidor web, también, lo que arroja una llave en las obras.

¿Fue útil?

Solución

Si está utilizando MSBuild para tu web desplegará Puede escribir una CustomBuildTask en .NET que se puede utilizar para crear el directorio virtual.

Hay una gran cantidad de recursos sobre cómo crear y consumir una tarea de generación personalizada, pero aquí es el código que utilizo para crear un directorio virtual mediante una tarea de generación personalizada:

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

Otros consejos

No he hecho ninguna programación personalizada contra WebDeploy, pero he visto referencia que existe una API para ello. Parece que no puedo encontrar documentación oficial sobre el mismo, pero quizás este blog + aplicación de ejemplo podría proporcionar un comienzo: Aplicación web web Implementar API

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top