Вопрос

При разработке сайта на VS2010 / IIS 7.5, я использую веб-развертывание, чтобы опубликовать сайт с моей машины на сервер сайта Dev.

На сайте около 40 виртуальных каталогов, и я хотел бы автоматически создавать на сервере во время развертывания. Есть ли простой способ сделать это?

Я рассматриваю возможность написания небольшого приложения, которое загрузит список из файла или базы данных и создать их по требованию. У каталогов есть разные физические пути к моей машине развития, чем на веб-сервере, также, что бросает гаечный ключ в работает.

Это было полезно?

Решение

Если вы используете MSBUILD для вашего веб-развертывания, вы можете написать настройку CustombuildTask в .NET, которые вы можете использовать для создания вашего виртуального каталога.

Есть много ресурсов о том, как создавать и потреблять пользовательскую задачу сборки, но вот код, который я использую для создания виртуального каталога, используя пользовательскую задачу сборки:

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

Другие советы

Я не сделал кадровое программирование против WebDeploy, но я видел ссылку на то, что для него есть API. Я не могу найти официальную документацию на нем, но, возможно, приложение этого блога + пример может обеспечить начало: Веб-приложение Web Deploy API

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top