IIS Web Deploy - создавать виртуальные каталоги?
-
26-09-2019 - |
Вопрос
При разработке сайта на 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