Как вы можете получить название веб-приложения на веб-сайте?
Я хочу иметь возможность проверить, существует ли приложение на существующем веб-сайте, но я ничего не нашел. На данный момент у меня есть проект установщика, который получает от пользователя ввод имени существующего веб-сайта. Я использую это, чтобы проверить, что сайт в настоящее время существует в IIS, и если да, то я хочу выполнить поиск в существующих приложениях, чтобы увидеть, существует ли конкретный 1. Вот что у меня есть:
private void CheckWebsiteApps()
{
SiteCollection sites = null;
try
{
//Check website exists
sites = mgr.Sites;
foreach (Site s in sites)
{
if (!string.IsNullOrEmpty(s.Name))
{
if (string.Compare(s.Name, "mysite", true) == 0)
{
//Check if my app exists in the website
ApplicationCollection apps = s.Applications;
foreach (Microsoft.Web.Administration.Application app in apps)
{
//Want to do this
//if (app.Name == "MyApp")
//{
// Do Something
//}
}
}
}
}
}
catch
{
throw new InstallException("Can't determine if site already exists.");
}
}
Очевидно, app.Name не существует, так что я могу сделать, чтобы получить это?
1 ответ
Для этого можно использовать API-интерфейсы Microsoft.Web.Administration и Microsoft.Web.Management для IIS. Их нет в GAC, вы должны ссылаться на них из папки inetsrv. На моей машине они расположены в...
- C: \ Windows \ System32 \ Inetsrv \ Microsoft.Web.Administration.dll
- C: \ Windows \ System32 \ Inetsrv\Microsoft.Web.Management.dll
Вот пример кода перечисления их,
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
foreach (var site in serverManager.Sites)
{
Console.WriteLine("Site -> " + site.Name);
foreach (var application in site.Applications)
{
Console.WriteLine(" Application-> " + application.Path);
}
}
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
}
Следовать за:
Приложения не имеют имен, только корневой сайт имеет имя в IIS. Приложения имеют только путь (так как они являются дочерними элементами сайтов). Если путь - "/", то приложение является корневым приложением для сайта. Если путь отличается от /, то это 2-е + дочернее приложение сайта. Таким образом, вам нужно будет использовать Application.Path, чтобы делать то, что вы хотите.