Как получить физические пути виртуального каталога и веб-приложения IIS с помощью кода C#?
Я пишу инструмент проверки развертывания веб-приложений на C#. И мне нужно проверить физическую структуру папок веб-приложений и виртуальных папок. Может ли это быть сделано в C#? ИЛИ в целом, взаимодействовать с IIS через код C#?
Я нашел эту ссылку и прочту ее дома.
Благодарю.
3 ответа
Я настоятельно рекомендую использовать dll Microsoft.Web.Administration для превосходных функций администратора с 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
Вы можете делать такие вещи, используя WMI:
Использование WMI для настройки IIS.
Администрирование IIS программно.
И вы можете использовать WMI из C# (Google для "WMI C#").
Так что да, это возможно.
Посмотрите на объект HttpRequest. Вы можете получить текущий URL, используя HttpContext.Current.Request.Url.
Если вы хотите проверить, существует ли виртуальная папка IIS, вы можете попробовать выполнить запрос Server.MapPath к относительному URL-адресу, который вы ожидаете существовать (снова вы найдете это в объекте HttpContext), и если сопоставление не будет успешным, вы можете затем Предположим, что определенной подпапки, указанной вашим относительным путем, не существует.
Надеюсь это поможет.