Как получить физические пути виртуального каталога и веб-приложения IIS с помощью кода C #? - PullRequest
3 голосов
/ 25 марта 2011

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

Как это можно сделать в C #?ИЛИ в целом, взаимодействовать с IIS через код C #?

Ответы [ 3 ]

13 голосов
/ 25 марта 2011

Я настоятельно рекомендую использовать Microsoft.Web.Administration dll для превосходных функций администратора с IIS.

ServerManager serverManager = new ServerManager();

// get the site (e.g. default)
Site site = serverManager.Sites.FirstOrDefault(s => s.Name == "Default Web Site");
// get the application that you are interested in
Application myApp = site.Applications["/Dev1"];

// get the physical path of the virtual directory
Console.WriteLine(myApp.VirtualDirectories[0].PhysicalPath);

Дает:

F:\ Dev \ Отрасли \ Dev1

1 голос
/ 25 марта 2011

Вы можете делать такие вещи, используя WMI:

Используя WMI для настройки IIS .

Программное управление IIS .

И вы можете использовать WMI из C # (Google для "WMI C #").

Так что, да, это возможно.

0 голосов
/ 25 марта 2011

Посмотрите на объект HttpRequest. Вы можете получить текущий URL используя HttpContext.Current.Request.Url.

Если вы хотите проверить, существует ли виртуальная папка IIS, вы можете попробовать выполнить Server.MapPath вызов относительного URL, который вы ожидаете существовать (снова вы найдете это в объекте HttpContext), и если сопоставление не удастся, тогда вы можете предположить, что определенной подпапки, указанной вашим относительным путем, не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...